2011-02-06 15 views
7

मैंने सुना है कि LINQ से XML में कुछ प्रदर्शन समस्याएं हैं और मेरे कुछ दोस्तों ने मुझे अपने ऐप में इसका उपयोग न करने की सलाह दी है। मुझे एमएसडीएन पर कुछ भी प्रासंगिक नहीं मिला और मैं "कुछ इंटरनेट ब्लॉग" पर भरोसा नहीं करना चाहता हूं। क्या किसी को इस मुद्दे या कुछ भरोसेमंद स्रोत पर आधिकारिक दृष्टिकोण के बारे में पता है?linq से xml प्रदर्शन

+0

xPath और LINQ की एक्सएमएल के लिए तुलना: http://msdn.microsoft.com/en-us/library/bb675156.aspx –

+0

संबंधित: http://stackoverflow.com/questions/14000846/xdocument-performance – nawfal

उत्तर

12

एक्सएमएल के लिए LINQ का उपयोग करते हुए स्मृति में पूरी फ़ाइल पढ़ा जाएगा।

यदि आप एक विशाल XML फ़ाइल (सैकड़ों मेगाबाइट्स) पढ़ रहे हैं, तो यह एक समस्या है।
इसके बजाय, आप एक कच्चे XmlReader का उपयोग कर सकते हैं, जो एक XML फ़ाइल का एकमात्र दृश्य प्रदान करता है और पूरी फ़ाइल को एक बार में नहीं पढ़ेगा।

यदि आप सामान्य आकार की एक्सएमएल फाइलों से निपट रहे हैं, तो LINQ से XML ठीक होगा।

LINQ से XML XmlReader की तुलना में उपयोग करने के लिए परिमाण के कई आदेश हैं।
आपको केवल XmlReader का उपयोग करना चाहिए यदि आप जानते हैं कि आप 200 एमबी एक्सएमएल फाइलों से निपटेंगे, या यदि आपने अपना प्रदर्शन माप लिया है और साबित किया है कि XDocument कन्स्ट्रक्टर बहुत धीमा है।

+7

माइक्रोसॉफ्ट लिंक से एक्सएमएल का उपयोग कर एक्सएमएल फ़ाइल के इनपुट/आउटपुट को स्ट्रीम करने के तरीके पर उदाहरण प्रदान करता है ताकि आप पूरी फ़ाइल को केवल स्मृति के मेमोरी में लोड नहीं कर सकें: http://msdn.microsoft.com/en- हमें/पुस्तकालय/system.xml.linq.xstreamingelement.aspx # Y1392 – Michael

4

बस Google linq vs xmlreader आपके पास होगा।

शीर्ष परिणाम, http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html, एक निष्कर्ष है कि यह धीमी (बेशक के बाद से linq2Xml XmlReader के शीर्ष पर बनाया गया है,) XmlReader से तुलना है की ओर जाता है, लेकिन IMHO यह कहीं स्वीकार्य तुलना में बेहतर है, आप लचीलापन और आसान लाभ के रूप में पढ़ने/कोड करने के लिए।

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