फ़ायरफ़ॉक्स 9.0.1 ने एन Ω (एन) लूप विधि के साथ अपना Ω (लॉग एन) संख्या-पैडिंग एल्गोरिदम दिखाकर मुझे आश्चर्यचकित कर दिया जब एन छोटा है। In every other browser I've seen, the loop is slower, यहां तक कि एन के छोटे मूल्यों के लिए भी। मुझे पता है कि सभी ब्राउज़र जेएस को अनुकूलित करने पर काम कर रहे हैं, लेकिन चूंकि अन्य सभी, आधुनिक ब्राउज़र लूप को धीमे होने के लिए दिखा रहे हैं, क्या फ़ायरफ़ॉक्स 9 में व्यवहार के लिए कोई स्पष्टीकरण है?फ़ायरफ़ॉक्स ने इस लूप को कैसे अनुकूलित किया?
// Ω(log n)
function padNumberMath(number, length) {
var N = Math.pow(10, length);
return number < N ? ("" + (N + number)).slice(1) : "" + number
}
// Ω(n):
function padNumberLoop(number, length) {
var my_string = '' + number;
while (my_string.length < length) {
my_string = '0' + my_string;
}
return my_string;
}
अद्यतन: मुझे नहीं लगता कि इस मूल प्रश्न से संबंधित है, लेकिन मैं अभी पता चला कि आईई 9 जब 64-बिट मोड के लिए 32- से स्विच व्यवहार स्विच करता है। 32-बिट मोड में, मैथ विधि जीत जाती है। 64-बिट मोड में, लूप विधि जीत जाती है। बस सोचा कि मुझे इसे इंगित करना चाहिए।
अपडेट 2: एमएके ने मुझे नीचे अपनी टिप्पणी में पकड़ा। गणित विधि Ω (1) नहीं है, यह शायद Ω (लॉग एन) की तरह अधिक है।
कौन सा Ω (1) विधि है? मुझे किसी भी एक्सपोनिएशन एल्गोरिदम की जानकारी नहीं है जो ओ (लॉग एन) से तेज है। – MAK
यहां कुंजी यह है कि यह केवल n के छोटे मानों के लिए होती है। मैं मानता हूं कि कुछ प्रकार का लूप-अनोलिंग होता है जब एन छोटा होता है, जिससे ओ (1) परिणाम होता है। यदि वे एक लूप में स्ट्रिंग कॉन्सटेनेशन को और अनुकूलित करते हैं, तो यह भी तेज हो सकता है। कोड को देखकर केवल सही जवाब मिलेगा, हालांकि। – jknupp
आप मान लेंगे, लेकिन क्या आप * शो * को कोई सबूत प्रदान कर सकते हैं कि लूप अनोलिंग चल रहा है? –