नोकोगिरी libxml2 पर आधारित है, जो कि किसी भी भाषा में सबसे तेज़ एक्सएमएल/एचटीएमएल पार्सर्स में से एक है। यह सी में लिखा गया है, लेकिन कई भाषाओं में बाइंडिंग हैं।
समस्या यह है कि फ़ाइल जितना जटिल होगा, स्मृति में एक पूर्ण डोम संरचना बनाने में उतना ही समय लगेगा। एक डोम बनाना धीमा और अन्य पार्सिंग विधियों की तुलना में अधिक स्मृति-भूखा है (आमतौर पर पूरे डोम को स्मृति में फिट होना चाहिए)। XPath इस डोम पर निर्भर करता है।
SAX अक्सर लोगों के लिए गति या बड़े दस्तावेज़ों के लिए बदल जाता है जो स्मृति में फिट नहीं होते हैं। यह अधिक घटना संचालित है: यह आपको प्रारंभ तत्व, अंतिम तत्व इत्यादि की सूचना देता है, और आप उन्हें प्रतिक्रिया देने के लिए हैंडलर लिखते हैं। यह दर्द का थोड़ा सा है क्योंकि आप स्वयं को राज्य का ट्रैक रखते हैं (उदाहरण के लिए आप कौन से तत्व "अंदर" हैं)।
एक मध्यम जमीन है: कुछ पार्सर्स में "पुल पार्सिंग" क्षमता होती है जहां आपके पास कर्सर जैसी नेविगेशन होती है। आप अभी भी अनुक्रमिक रूप से प्रत्येक नोड पर जाते हैं, लेकिन आप उस तत्व के अंत में "तेज़-आगे" जा सकते हैं जिसमें आप रुचि नहीं रखते हैं। इसे SAX की गति मिल गई है लेकिन कई उपयोगों के लिए एक बेहतर इंटरफ़ेस है। मुझे नहीं पता कि नोकोगिरी एचटीएमएल के लिए ऐसा कर सकता है, लेकिन यदि आप रुचि रखते हैं तो मैं Reader API देखता हूं।
ध्यान दें कि नोकोगिरी भी विकृत मार्कअप (जैसे वास्तविक दुनिया HTML) के साथ बहुत ही कमजोर है और यह अकेले इसे HTML पार्सिंग के लिए बहुत अच्छा विकल्प बनाता है।
स्रोत
2010-10-27 23:40:34
nokogiri सबसे तेजी से मणि अभी – s84
मैं बैल nokogiri –