2011-03-11 24 views
24

सामान्य जावास्क्रिप्ट इंजन, जैसे वी 8 और वेबकिट के जावास्क्रिप्टकोर, जावास्क्रिप्ट तारों के लिए string interning का उपयोग करें? या क्या वे वास्तव में स्मृति में समान तारों के कई उदाहरण रखते हैं?सामान्य जावास्क्रिप्ट कार्यान्वयन स्ट्रिंग इंटर्निंग का उपयोग करें?

उत्तर

18

हां। सामान्य रूप से जेएस स्रोत में किसी भी शाब्दिक स्ट्रिंग, पहचानकर्ता, या अन्य निरंतर स्ट्रिंग को प्रशिक्षित किया जाता है। हालांकि कार्यान्वयन विवरण (उदाहरण के लिए जो इंटर्न किया गया है) अलग-अलग होता है, साथ ही जब इंटर्निंग होती है।

ध्यान दें कि एक स्ट्रिंग मान स्ट्रिंग ऑब्जेक्ट के समान नहीं है, हालांकि स्ट्रिंग ऑब्जेक्ट्स इंटर्न नहीं किए जाते हैं क्योंकि यह मौलिक रूप से गलत व्यवहार होगा।

+3

हाय @olliej, आपकी बयान के लिए किसी भी स्रोत है? –

+3

@FelipeSabino एक प्रमुख इंजन पर काम कर रहा है और ecmascript समिति गिनती पर है? ;) अधिक गंभीरता से हालांकि आप जावास्क्रिप्टकोर, स्पाइडरमोन्की, वी 8, आदि के स्रोतों को ऑनलाइन देख सकते हैं। – olliej

+5

बेशक मैं किसी भी ओपन सोर्स कोड को देख सकता हूं और इसे अपने लिए देख सकता हूं, लेकिन इस समस्या से बचने के कारणों में से एक कारण है। यह आपके ज्ञान पर संदेह करने का सवाल नहीं है, यह केवल अपने शोध के साथ डेवलपर्स की मदद करने के बारे में चिंता का विषय है। ऐसा लगता है कि आप ऐसे व्यक्ति हैं जो इस विषय के बारे में बहुत कुछ जानते हैं, और साथ ही साथ और अधिक जोरदार संदर्भों के साथ जो मुझे इस विषय के बारे में बहुत कुछ सीखने में मदद कर सकते हैं। बस उदाहरण के लिए, आपने कहा "सामान्य तारों में प्रशिक्षित होते हैं", वे मामले क्या हैं जहां वे नहीं हैं? और इतने पर ... –

10

http://jsperf.com/strinterning

क्रोम में हाँ, कोई अरोड़ा 15 और एफएफ 13 में! फ़ायरफ़ॉक्स में दो पॉइंटर्स की तुलना में दो तारों की तुलना में 85% धीमी है। हालांकि यह क्रोम में एक ही गति है, जो एक संकेत है कि यह दो पॉइंटर्स की तुलना कर रहा है।

हो सकता है कि मोज़िला पर जे एस इंजन टीम अपने कोड की जाँच करनी चाहिए ...

+4

यदि आपको लगता है कि यह बुरा है, तो IE9 पॉइंटर तुलना भी नहीं करता है [जब स्ट्रिंग वैरिएबल की तुलना * * * * (http://www.kpozin.net/archive/2011/05/ie9 -और-स्ट्रिंग-समानता)। ([संबंधित जेएसपीआरएफएस] (http://jsperf.com/string-comparison1/3)।) – kpozin

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