दो कथन मूल रूप से कोर एपीआई स्तर पर एक ही काम करते हैं, जो कर्सर प्राप्त करता है और परिणामों को बदल देता है। हालांकि प्रदर्शन के बारे में एक "मूल" अंतर है:
-
.forEach()
कर्सर परिणामों को "एक समय में एक" रूपांतरित करेगा और इसे प्रदान किए गए इटरेटर फ़ंक्शन को संसाधित करेगा। -
.fetch()
दूसरी ओर कर्सर से "सरणी" प्राप्त करता है "सभी एक बार" जिसका अर्थ है कि यह एक हिट में "स्मृति में" है।
तो कोई बात नहीं, क्वेरी के कर्सर से लाने के "कोर" ऑपरेशन को करने में न तो वास्तव में "तेज" है। हालांकि, प्रत्येक कर्सर पुनरावृत्ति पर "अभिव्यक्ति" का मूल्यांकन नहीं करना "थोड़ा तेज" हो सकता है, इसलिए .fetch()
यहां "थोड़ा" जीत सकते हैं।
बेशक बड़ी बड़ी पकड़ "सब कुछ अब स्मृति में है", इसलिए विचार करने के लिए ऐसा करने का "ओवरहेड" है। साथ ही, .fetch()
. के समय भी _.each()
अभी तक संसाधित नहीं किया गया है, जैसा कि कहा जाता है। "गोल चक्करों पर आप "ढीले" झूलों पर "क्या हासिल करते हैं" ।
विशिष्ट मामलों के पूर्ण बेंचमार्किंग के बिना, "समय" समान होने की संभावना है। और जेनेरिक बेंचमार्किंग तब तक बेकार है जब तक कि यह विशेष रूप से आपके द्वारा काम कर रहे डेटा सेट के आकार पर लागू न हो।
इसलिए सामान्य मामला सामने आता है, "उसी के बारे में" , हालांकि .fetch()
. का उपयोग कर रहे हैं अधिक मेमोरी का उपभोग करने जा रहा है शुरू से ही कर्सर को पुनरावृत्त करने के बजाय।