我对具有1000万次迭代的循环进行了性能测试。一个包裹在一个函数中,另一个包裹在一个函数中。这是代码:
console.time('forLoop')
for (let i = 0; i < 10000000; i++);
console.timeEnd('forLoop')
function forLoop() {
for (let i = 0; i < 10000000; i++);
}
console.time('forLoopFunc')
forLoop()
console.timeEnd('forLoopFunc')
我跑了5次,结果如下:
forLoop: 7.750ms
forLoopFunc: 5.551ms
forLoop: 7.311ms
forLoopFunc: 5.410ms
forLoop: 7.221ms
forLoopFunc: 5.987ms
forLoop: 7.380ms
forLoopFunc: 5.018ms
forLoop: 7.516ms
forLoopFunc: 5.342ms
为什么将其包装在函数中会减少约2ms的执行时间(速度提高约25%)?
答案 0 :(得分:1)
如果您尝试先运行该函数,则会发现该函数内部的循环现在需要更多时间。
这与编译javascript的V8引擎如何工作,而不仅仅是代码有关。
在幕后做了很多优化,以加快javascript代码的速度。 其中之一是优化编译器。