2009-05-13 14 views
5

हमारे द्वारा विकसित किए जा रहे अनुप्रयोगों में से एक में हम एक्सएमएल प्रोसेसिंग करते हैं। वर्तमान में हम अधिकांश प्रोसेसिंग के लिए डीओएम और एक्सपीएथ का उपयोग करते हैं और हम प्रदर्शन से ज्यादा खुश नहीं हैं।लिंक से एक्सएमएल बनाम डीओएम

क्षण हम LINQ और हमारी प्रारंभिक जांच करने के लिए XML संसाधन तर्क हिलाने की विचार कर रहे हैं पर सुझाव है कि LINQ प्रदर्शन डोम तुलना में काफी बेहतर है।

इन परिवर्तनों मुझे पता है कि कैसे दूसरों को इस बारे में लग रहा है चाहते हैं करने से पहले

। LINQ का उपयोग बेहतर विकल्प है? किसी भी disavantages आदि ...

धन्यवाद, Shamika


आप अपने जवाब के लिए बहुत बहुत धन्यवाद। मैंने कुछ प्रदर्शन परीक्षण किए और अपेक्षित XmlReader ने XmlDocument और LINQ दोनों को निष्पादित किया। कृपया ध्यान दें कि यह केवल एक्सएमएल पढ़ने के लिए है।

इसके अलावा, आप LINQ के उपयोग में आसानी की जरूरत है अगर आप XmlReader की कुछ सुविधाओं का उपयोग करके LINQ XML प्रोसेसिंग लागू कर सकते हैं और XmlDocument तुलना में काफी बेहतर प्रदर्शन कर सकते हैं। कृपया अधिक जानकारी के लिए "rwwilden" टिप्पणियों का संदर्भ लें।

धन्यवाद। > एक्सएमएल कई गुना है डोम से उपयोग में आसान -

+0

इस प्रश्न पर एक नज़र डालें: http: // stackoverflow।कॉम/प्रश्न/182976 –

उत्तर

1

उस पर मेरी ले कि LINQ है। यह मेरे लिए अधिक सहज है और आईएमओ पढ़ने के लिए बहुत आसान है।

2

मुझे यकीन है कि आप डोम/XPath के बजाय LINQ2XML का उपयोग कर एक बहुत बड़े प्रदर्शन में सुधार ही ध्यान दिया, नहीं हूँ। डोम और LINQ2XML दोनों दस्तावेज़ों के लिए जो आप पुनरावृत्त करते हैं, को इन-मेमोरी पेड़ के रूप में दर्शाया जाता है।

यदि प्रदर्शन वास्तव में एक मुद्दा है और आपके पास बड़े XML दस्तावेज़ हैं, तो आप ढांचे में लागू किए गए प्राथमिक XML स्ट्रीमिंग समर्थन को देख सकते हैं (XStreamingElement के माध्यम से)। यह माइक्रोसॉफ्ट एक्सएमएल टीम blog entry भी देखें।

3

समृद्ध नेविगेशन समर्थन (उन सभी संदर्भों को जोड़ने के लिए शुरू) की वजह से डोम (यानी System.Xml.XmlDocument) का उपयोग धीमा होने की संभावना है, और यह ओवरहेड अधिक महत्वपूर्ण हो जाएगा क्योंकि नोड्स की संख्या बढ़ जाती है।

सरल ऑब्जेक्ट मॉडल (System.Xml.Linq.XDocument और System.Xml.XPath.XPathDocument) ऐसी जटिल संरचनाएं नहीं हैं, लेकिन अन्य माध्यमों से नेविगेशन की अनुमति दें। यह सीपीयू ओवरहेड में जोड़ सकता है लेकिन स्मृति को सहेजना चाहिए।

अंत आप अपने मामले में (समय और स्थान) प्रोफ़ाइल, और यह भी विचार कितना असली (उपयोगकर्ता कथित) अंतर यह बनाता है की जरूरत है।

लेकिन, अंतिम प्रदर्शन के लिए पूरे दस्तावेज़ को स्मृति में लोड नहीं किया जाता है: System.Xml.XmlReader और System.Xml.XmlWriter का उपयोग करें और स्ट्रीम में सबकुछ करें। बेशक यह विकास लागत जोड़ता है।

.NET में एक्सएमएल एपीआई का एक समृद्ध (शायद बहुत समृद्ध) सेट है, जो कि आपके लिए सबसे अच्छा (या कम से कम, कम से कम सबसे खराब) है, केवल आपके द्वारा ट्रेड-ऑफ बनाने के लिए निर्धारित किया जा सकता है जो आपके लिए सबसे अच्छा है।

व्यक्तिगत तौर पर मैं XmlDocument से बचने और प्रयोग करेंगे या तो XPathDocument (विशेष रूप से पढ़ने के लिए, और XPath के साथ क्वेरी) (विशेष रूप से बनाने के लिए) या XDocument जहां XmlReader/XmlWriter एक प्रदर्शन को बढ़ावा देने का औचित्य साबित करने के लिए पर्याप्त नहीं मिल जाता।

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