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

看板Ajax作者 (ill!)時間8年前 (2016/11/12 15:20), 編輯推噓4(407)
留言11則, 6人參與, 最新討論串1/1
{ 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

11/12 16:09, , 1F
瀏覽器的全域變數都是屬於 window 這個物件
11/12 16:09, 1F

11/12 16:09, , 2F
而 window 底下有超多東西, 在裡面找人找一百萬次很慢
11/12 16:09, 2F

11/12 16:12, , 3F
但 node 的全域變數屬於 global 這物件
11/12 16:12, 3F

11/12 16:12, , 4F
裡面東西沒有瀏覽器的 window 那麼多, 所以比較快
11/12 16:12, 4F

11/12 16:13, , 5F
再者 node 直接宣告 var 宣告的是 module-local 變數
11/12 16:13, 5F

11/12 16:13, , 6F
只屬於這個 module 所以又更沒有負擔
11/12 16:13, 6F

11/12 16:30, , 7F
有學到有推 試了一下,全域執行所需的時間是IFFE的4倍以上
11/12 16:30, 7F

11/12 16:41, , 8F
喔喔了解感謝
11/12 16:41, 8F

11/12 17:41, , 9F
實用推!
11/12 17:41, 9F

11/12 22:58, , 10F
要公平比的話,應該在 function scope 下
11/12 22:58, 10F

11/13 18:13, , 11F
實務上 不管browser還是node都不太會直接用廣域變數
11/13 18:13, 11F
文章代碼(AID): #1O9iAdhe (Ajax)
文章代碼(AID): #1O9iAdhe (Ajax)