के बजाय ऑब्जेक्ट शाब्दिक का उपयोग करना स्विच और स्विच/ कथन में सर्वोत्तम प्रथाओं के बारे में बहुत सी चर्चाएं और टिप्पणियां हैं। मैंने लोगों को यह कहते हुए देखा है कि हम सभी को संभव होने पर स्विच करने के बजाय ऑब्जेक्ट शाब्दिक का उपयोग करना चाहिए।स्विच स्टेटमेंट
(function(test){
var bar;
switch(bar) {
case 1:
bar = 'red';
break;
case 2:
bar = 'blue';
break;
case 3:
bar = 'yellow';
break;
case 4:
bar = 'green';
break;
case 5:
bar = 'black';
break;
}
return bar;
})(5);
और गुजर गर्त एक वस्तु शाब्दिक:
इसलिए मैं इस मामले और एक स्विच के बीच reproduced किया है
(function(test){
return { 1: 'red', 2: 'blue', 3: 'yellow', 4: 'green', 5: 'black' }[ test ];
})(5);
इस test चलाने के बाद, यह स्पष्ट लगता है कि स्विच बयान ऑब्जेक्ट शाब्दिक में परीक्षण मूल्य को कॉल करने से तेज़ है।
क्या मेरा परीक्षण गलत है? इस मामले में एक या किसी अन्य विधि का उपयोग करने से पहले मुझे क्या विचार करना चाहिए? या शायद इस विषय के बारे में मैंने देखा है कि टिप्पणियां गलत हैं और मुझे बुनियादी बातों को बाईपास करने की कोशिश नहीं करनी चाहिए ...
आपका परीक्षण ठीक है; आप गति के लिए स्मृति व्यापार कर रहे हैं (जो आप लगभग हमेशा कर सकते हैं)। आप समयपूर्व/माइक्रो-ऑप्टिमाइज़ेशन में भी व्यस्त हो सकते हैं। इसके अलावा, किसी ऑब्जेक्ट के साथ आप मनमाने ढंग से कोड नहीं चला सकते हैं (जब तक कि फ़ंक्शन कॉल के ऊपरी भाग पर मान लागू नहीं होते हैं)। सामान्य रूप से, अपने _algorithms_ को अनुकूलित करने के लिए पहले प्रयास करें, न कि आपके व्यक्तिगत कोड कॉल। – Phrogz
ओह, प्रतीक्षा करें, आपके परीक्षण में एक समस्या है: आप प्रत्येक नई फ़ंक्शन कॉल के दौरान ऑब्जेक्ट शाब्दिक को फिर से चालू कर रहे हैं। उस ऑब्जेक्ट को पूर्व-आवंटित करें और पुनः प्रयास करें। साथ ही, ध्यान दें कि आधुनिक जेआईटी जेएस रनटाइम्स के साथ कोड के छोटे लूपों का भारी परीक्षण किया जाता है, जैसे कि निर्देश पुनः लिखने में लातें जो वास्तविक दुनिया के प्रदर्शन का संकेत नहीं दे सकती हैं। – Phrogz
@Phrogz http://jsperf.com/switch-from-switches/4; हालांकि मैं अभी भी ऑब्जेक्ट नोटेशन का उपयोग करने का प्रशंसक नहीं हूं। – NullUserException