किसी सरणी में डेटा तक पहुंचने के लिए मैंने enum
-जैसी चर को फ़ील्ड में मानव पठनीय पहचानकर्ता बनाने के लिए बनाया है।एक जमे हुए "enum" धीमा क्यों है?
var columns = { first: 0, second: 1 };
var array = ['first', 'second'];
var data = array[columns.first];
जब मुझे पता चला के बारे में Object.freeze
मैं enum इतना है कि यह बदला नहीं जा सकता के लिए इसका उपयोग करना चाहता था, और मैं वी एम अपने लाभ के लिए इस जानकारी का उपयोग करने की उम्मीद।
जैसा कि यह पता चला है, परीक्षण क्रोम और नोड पर धीमे हो जाते हैं, लेकिन फ़ायरफ़ॉक्स पर थोड़ा तेज (संख्या द्वारा सीधे पहुंच की तुलना में)।
कोड यहाँ उपलब्ध है: http://jsperf.com/array-access-via-enum
यहाँ (JSPerf परीक्षण करने के लिए इसी) नोड से मानक हैं:
fixed Number: 12ms
enum: 12ms
frozenEnum: 85ms
करता वी 8 बस अभी तक एक महान कार्यान्वयन नहीं, या वहाँ कुछ है मेरे उपयोग के मामले के लिए इस दृष्टिकोण के साथ suboptimal?
ऐसा लगता है कि वी 8 का स्थिर कोड विश्लेषण काफी अच्छा है और निश्चित संख्याओं तक 'कॉलम' एनम पहुंच का अनुवाद करता है। यह 'जमे हुए' एनम ऑब्जेक्ट के साथ ऐसा नहीं करता है क्योंकि इसे 'ऑब्जेक्ट.फ्रीज़' द्वारा उत्परिवर्तित किया जाता है - एफएफ वहां चालाक लगता है। – Bergi