[問題] 為什麼node比chrome快?

作者: illl (ill!)   2016-11-12 15:20:04
{
console.time("loop");
for (var i = 0; i < 1000000; i += 1){
// Do nothing
}
console.timeEnd("loop");
}
在網路上看到 ( https://www.toptal.com/nodejs/interview-questions )
說上面這段code
node的執行速度會比chrome瀏覽器快
雖然都是用v8引擎
原因是
因為i是global,會被綁在window object上
然後會
repeatedly resolving the property i within the heavily populated
window namespace in each iteration of the for loop.
上面這句英文理解不能
可以請大大開釋一下嗎?
感謝
作者: LPH66 (-6.2598534e+18f)   2016-11-12 16:09:00
瀏覽器的全域變數都是屬於 window 這個物件而 window 底下有超多東西, 在裡面找人找一百萬次很慢但 node 的全域變數屬於 global 這物件裡面東西沒有瀏覽器的 window 那麼多, 所以比較快再者 node 直接宣告 var 宣告的是 module-local 變數只屬於這個 module 所以又更沒有負擔
作者: eight0 (欸XD)   2016-11-12 16:30:00
有學到有推 試了一下,全域執行所需的時間是IFFE的4倍以上
作者: illl (ill!)   2016-11-12 16:41:00
喔喔了解感謝
作者: youtuuube000 (小孩)   2016-11-12 17:41:00
實用推!
作者: MangoTW (不在線上)   2016-11-12 22:58:00
要公平比的話,應該在 function scope 下
作者: mrbigmouth (大嘴先生)   2016-11-13 18:13:00
實務上 不管browser還是node都不太會直接用廣域變數

Links booklink

Contact Us: admin [ a t ] ucptt.com