作者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://webptt.com/cn.aspx?n=bbs/Ajax/M.1478935207.A.AE8.html
1F:推 LPH66: 浏览器的全域变数都是属於 window 这个物件 11/12 16:09
2F:→ LPH66: 而 window 底下有超多东西, 在里面找人找一百万次很慢 11/12 16:09
3F:→ LPH66: 但 node 的全域变数属於 global 这物件 11/12 16:12
4F:→ LPH66: 里面东西没有浏览器的 window 那麽多, 所以比较快 11/12 16:12
5F:→ LPH66: 再者 node 直接宣告 var 宣告的是 module-local 变数 11/12 16:13
6F:→ LPH66: 只属於这个 module 所以又更没有负担 11/12 16:13
7F:推 eight0: 有学到有推 试了一下,全域执行所需的时间是IFFE的4倍以上 11/12 16:30
8F:→ illl: 喔喔了解感谢 11/12 16:41
9F:推 youtuuube000: 实用推! 11/12 17:41
10F:→ MangoTW: 要公平比的话,应该在 function scope 下 11/12 22:58
11F:推 mrbigmouth: 实务上 不管browser还是node都不太会直接用广域变数 11/13 18:13