इस कोड पर अलग बर्ताव करता है:क्यों इस कोड को विभिन्न मूल्यों
var i = 10000000000;
do {
i--;
}
while (i !== 0);
//Result: 38 second.
var i = 10000000000;
do {}
while (i-- !== 0);
//Result: 27 second.
//(same result with while (i--)
var i = 10000000000;
do {}
while (i-- | 0);
//Result: 13.5 second.
सवाल यह है: क्यों इन संस्करण मैं के छोटे मूल्य के लिए एक ही समय मिलता है? अगर मैं एक से शून्य शून्य कटौती; सभी संस्करणों को 2.2 सेकंड की आवश्यकता है। (जेआईटी अनुकूलन के बाद भी परीक्षण किया गया - केवल वी 8 में)
यह तार्किक लगता है कि तीसरा संस्करण हमेशा तेज़ होना चाहिए, लेकिन यह केवल बहुत अधिक मूल्यों के लिए तेज़ है।
यह सिर्फ एक जिज्ञासा है ... वास्तव में महत्वपूर्ण नहीं है।
मैंने इन्हें jsperf में डालने की कोशिश की लेकिन यह मेरे ब्राउज़र को http://jsperf.com/do-while-speed-test को दुर्घटनाग्रस्त कर देता है। ध्यान रखें कि अलग-अलग जावास्क्रिप्ट इंजन अलग-अलग परिणामों का परिणाम देंगे, क्योंकि वे अलग-अलग चीजों को प्राथमिकता देते हैं। यह अंतर्निहित ओएस के हैंडलिंग नंबरों के तरीके के रूप में कुछ आसान हो सकता है। (अद्यतन: परीक्षण चला गया है लेकिन जेएसपीआरएफ अपनी खुद की 'नाम' संपत्ति खोने के बारे में एक त्रुटि फेंक रहा है। कोई विचार नहीं कि ऐसा क्यों हुआ) – somethinghere
आखिरी वाला सबसे तेज़ है क्योंकि यह केवल 1410065408 बार पुनरावृत्त करता है और वास्तव में दूसरे की गति 1/3 है संस्करण, यानी 1044492 9 0 प्रति सेकंड बनाम 370370370 प्रति सेकेंड –
अच्छा अवलोकन। यह नहीं देखा था। –