14

मैं हाल ही के प्रदर्शन मानकों की खोज कर रहा हूं जो एल 2 एस और ईएफ की तुलना करते हैं और ईएफ के जारी संस्करण का उपयोग करके संग्रहित प्रक्रियाओं को संग्रहीत करने वाले किसी भी परीक्षण को नहीं ढूंढ पाए। तो, मैंने अपने कुछ परीक्षण चलाए और कुछ दिलचस्प परिणाम पाये।लिंक से एसक्यूएल बनाम इकाई फ्रेमवर्क प्रदर्शन

क्या ये परिणाम सही दिखते हैं? क्या मुझे इसे अलग तरीके से परीक्षण करना चाहिए?

संदर्भ, sproc में से एक कॉल का एक उदाहरण: (मृत लिंक) संदर्भ से

एक उदाहरण, एक ही sproc के कई कॉल: (मृत लिंक)

के अनेक इंस्टैंस संदर्भ, एक ही स्पोक की एकाधिक कॉल: (मृत लिंक)

+0

क्या होता है जब आप एक का उपयोग कर() ब्लॉक में अपने संदर्भ निर्माण लाइनें डाल? उन लंबी अवधि की कॉल सिस्टम के कारण हो सकती है जो पूल में कनेक्शन नहीं है ...? –

+2

आप अपडेट को बेंचमार्क, डिलीट और प्रदर्शन सम्मिलित करना भी चाह सकते हैं। – DamienG

+0

क्या आपका डेटा कोड आमतौर पर ऐसा दिखता है? किसी भी तरह से यह वास्तविक डेटा एक्सेस कोड की तरह दिखता प्रतीत नहीं होता है ... लूप के लिए परीक्षण में वास्तविक डेटा एक्सेस पैटर्न की तरह दिखने के समान कुछ भी नहीं है। –

उत्तर

7

मुझे लगता है कि startup costs vs. execution costs को अलग करने के लिए आपको इसे कुछ अलग तरीके से परीक्षण करना चाहिए। विशेष रूप से इकाई फ्रेमवर्क में startup costs resulting from the need to compile database views है (हालांकि आप इसे पहले से कर सकते हैं)। इसी तरह, LINQ की compiled query की धारणा है, जो कई बार एक क्वेरी निष्पादित करने पर उपयुक्त होगी।

कई अनुप्रयोगों के लिए, क्वेरी निष्पादन लागत स्टार्टअप लागत से अधिक महत्वपूर्ण होगी। कुछ के लिए, विपरीत सच हो सकता है। चूंकि इनमें से प्रदर्शन विशेषताएं अलग-अलग हैं, इसलिए मुझे लगता है कि उन्हें अलग करना महत्वपूर्ण है। विशेष रूप से, बार-बार निष्पादित क्वेरी की औसत लागत में स्टार्टअप लागत औसत से भ्रामक है।

+0

लेकिन क्या ये परिणाम प्रतिबिंबित नहीं करेंगे कि एएसपीनेट एप्लिकेशन में चीजें कैसे काम करती हैं? चूंकि मैं वास्तव में एक उदाहरण को 'जीवित' संदर्भ नहीं रख सकता हूं, इसलिए मुझे प्रत्येक अनुरोध पर एक नया बनाना है और संग्रहीत प्रक्रिया को कॉल करना है। – Vyrotek

+0

नहीं, जरूरी नहीं।आप एंटिटी फ्रेमवर्क दृश्यों को प्रीकंपाइल कर सकते हैं, इस मामले में आप किसी संदर्भ को तत्काल करते समय उस लागत का भुगतान नहीं करते हैं। यहां तक ​​कि उन चीजों के लिए भी जिन्हें प्रीकंपिल्ड नहीं किया जा सकता है, इन वस्तुओं को ट्रैक करने से एक अनुरोध के बीच अंतर स्पष्ट होता है जो एक प्रश्न और एक करता है जो 100 करता है। –

2

मैंने कुछ परीक्षण एएसपीनेट पेजों को देखने की कोशिश की जो बेहतर प्रदर्शन करते हैं। मेरे परीक्षण किया गया था:

10,000 रिकॉर्डों को नष्ट 10,000 रिकॉर्ड संपादित 10,000 रिकॉर्ड DataBind एक GridView और पेज

मैं LinqToSql तेजी से होने की उम्मीद कर रहा था पर प्रदर्शित करने के लिए 10,000 रिकॉर्ड्स प्रविष्ट लेकिन इसके बाद के संस्करण LinqToSql कर लगभग लेता है 2 मिनट जबकि LinqToEntities 20 सेकंड से कम लेता है।

कम से कम इस परीक्षण के लिए ऐसा लगता है कि LinqToEntities तेज है। मेरे परिणाम भी आपके साथ मेल खाते हैं।

मैंने हालांकि 1 से अधिक तालिका सम्मिलित/संपादन/हटाना/प्रदर्शित करने का प्रयास नहीं किया था।

मुझे और जानने में दिलचस्पी है ... या यदि मेरा परीक्षण वैध प्रकार का परीक्षण नहीं है तो मुझे कुछ वास्तविक परीक्षण देखने में दिलचस्पी होगी।

+1

मुझे लगता है कि यह एक पुरानी पोस्ट है लेकिन यदि आप अभी भी रुचि रखते हैं तो मैंने कुछ किया है ईएफ के साथ परीक्षण जो यहां उपलब्ध हैं (http://blog.staticvoid.co.nz/2012/03/entity-framework-comparative.html)। मैंने अपडेट पर L2S बहुत धीमा पाया लेकिन मुझे यह जानना अच्छा लगेगा कि क्यों (और यदि इसे सुधारने का कोई तरीका है)। चुनिंदा पर एल 2 एस बहुत तेज़ था हालांकि –

+0

अच्छा काम। मैं डेटाबेस और ओआरएम में एक विशेषज्ञ से बहुत दूर हूं, लेकिन मुझे लगता है कि आपके परीक्षण क्या दिखाए गए हैं। मैंने हाल ही में ईएफ 5 सुधारों पर एडीओनेट टीम से एक लेख पढ़ा है: http://blogs.msdn.com/b/adonet/archive/2012/02/14/sneak-preview-entity-framework-5-0- प्रदर्शन-सुधार .aspx – dtc

+0

धन्यवाद, हाँ ईएफ टीम हाल ही में प्रदर्शन के आसपास कुछ सुंदर चीजें कर रही है, दिलचस्प बात यह है कि ऐसा लगता है कि यह अधिकांश डॉट नेट 4.5 के अंदर किया गया है, ईएफ बाइनरी नहीं है जो ठंडा है क्योंकि यह पूरे समूह को देता है विभिन्न तकनीक एक बढ़ावा। –

संबंधित मुद्दे