मैं "कैशिंग" गणित के लाभ/हानि को बेंचमार्क करने की कोशिश कर रहा था, उम्मीद है कि मैं तेजी से कॉल कर सकता हूं।स्थानीय वैरिएबल वैश्विक चर से एक्सेस करने के लिए 7x लंबा लेते हैं?
<html>
<head>
<script>
window.onload = function()
{
var startTime = new Date().getTime();
var k = 0;
for(var i = 0; i < 1000000; i++) k += Math.floor(9.99);
var mathFloorTime = new Date().getTime() - startTime;
startTime = new Date().getTime();
window.mfloor = Math.floor;
k = 0;
for(var i = 0; i < 1000000; i++) k += window.mfloor(9.99);
var globalFloorTime = new Date().getTime() - startTime;
startTime = new Date().getTime();
var mfloor = Math.floor;
k = 0;
for(var i = 0; i < 1000000; i++) k += mfloor(9.99);
var localFloorTime = new Date().getTime() - startTime;
document.getElementById("MathResult").innerHTML = mathFloorTime;
document.getElementById("globalResult").innerHTML = globalFloorTime;
document.getElementById("localResult").innerHTML = localFloorTime;
};
</script>
</head>
<body>
Math.floor: <span id="MathResult"></span>ms <br />
var mathfloor: <span id="globalResult"></span>ms <br />
window.mathfloor: <span id="localResult"></span>ms <br />
</body>
</html>
मेरा परीक्षण से परिणाम:
यहाँ परीक्षण किया गया था
[Chromium 5.0.308.0]:
Math.floor: 49ms
var mathfloor: 271ms
window.mathfloor: 40ms
[IE 8.0.6001.18702]
Math.floor: 703ms
var mathfloor: 9890ms [LOL!]
window.mathfloor: 375ms
[Firefox [Minefield] 3.7a4pre]
Math.floor: 42ms
var mathfloor: 2257ms
window.mathfloor: 60ms
[Safari 4.0.4[531.21.10] ]
Math.floor: 92ms
var mathfloor: 289ms
window.mathfloor: 90ms
[Opera 10.10 build 1893]
Math.floor: 500ms
var mathfloor: 843ms
window.mathfloor: 360ms
[Konqueror 4.3.90 [KDE 4.3.90 [KDE 4.4 RC1]]]
Math.floor: 453ms
var mathfloor: 563ms
window.mathfloor: 312ms
विचरण, यादृच्छिक ज़ाहिर है, है, लेकिन सबसे अधिक भाग के
सभी मामलों में [के लिए इस समय ले लिया पता चलता]:
[लेता है लंबे समय तक] mathfloor> Math.floor> window.mathfloor [है तेजी से]
यह क्यों है? अपनी परियोजनाओं में मैं var mfloor = Math.floor
उपयोग कर रहे हैं, और मेरे नहीं-तो-अद्भुत मानक के अनुसार, "अनुकूलन" करने के लिए अपने प्रयासों को वास्तव में नीचे स्क्रिप्ट एक बहुत से धीमा ...
मेरे कोड बनाने के लिए किसी भी अन्य रास्ता नहीं है अधिक कुशल"...? मैं मंच जहां मैं मूल रूप से अनुकूलन करने के लिए की जरूरत में हूँ, इसलिए कोई, इस "समय से पहले अनुकूलन" नहीं है ...
मैं यह गलत पढ़ रहा हो सकता है, लेकिन अपने पाठ लेबल लगता है कि वे गलत चीजों का जिक्र कर रहे हैं। ऐसा लगता है कि वे किया जाना चाहिए: Math.floor: एमएस
window.mathfloor: एमएस
वर mathfloor: एमएस
– Joe