作者illl (ill!)
看板Ajax
標題[問題] 為什麼node比chrome快?
時間Sat Nov 12 15:20:04 2016
{
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.
上面這句英文理解不能
可以請大大開釋一下嗎?
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.203.67.221
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1478935207.A.AE8.html
推 LPH66: 瀏覽器的全域變數都是屬於 window 這個物件 11/12 16:09
→ LPH66: 而 window 底下有超多東西, 在裡面找人找一百萬次很慢 11/12 16:09
→ LPH66: 但 node 的全域變數屬於 global 這物件 11/12 16:12
→ LPH66: 裡面東西沒有瀏覽器的 window 那麼多, 所以比較快 11/12 16:12
→ LPH66: 再者 node 直接宣告 var 宣告的是 module-local 變數 11/12 16:13
→ LPH66: 只屬於這個 module 所以又更沒有負擔 11/12 16:13
推 eight0: 有學到有推 試了一下,全域執行所需的時間是IFFE的4倍以上 11/12 16:30
→ illl: 喔喔了解感謝 11/12 16:41
推 youtuuube000: 實用推! 11/12 17:41
→ MangoTW: 要公平比的話,應該在 function scope 下 11/12 22:58
推 mrbigmouth: 實務上 不管browser還是node都不太會直接用廣域變數 11/13 18:13