kar*_*ick 10 javascript google-chrome node.js

console.time("Test");
for(var i=0; i <2500000; i +=1 ){
// loop around
}
console.timeEnd("Test");
Run Code Online (Sandbox Code Playgroud)
上面的代码运行faster在nodejs比google chrome.为什么node.js比谷歌Chrome更快都使用chrome v8引擎
平均速度
Google Chrome - 1518.021ms
Node.js - 4 ms
Run Code Online (Sandbox Code Playgroud)
关于差异执行速度的任何想法?
kar*_*ick 21
在Web浏览器(Chrome)中,在任何函数范围之外声明变量i使其成为全局变量并因此绑定到window对象.因此,在Web浏览器中运行此代码需要在for循环的每次迭代中重复解析人口密集的窗口命名空间内的属性.
但是,在Node.js中,声明任何函数范围之外的任何变量只会将其绑定到模块范围(而不是窗口对象),因此可以更容易,更快地解析.
当我们在函数中包含上面的代码时,我们将获得或多或少相同的执行速度.
这是由于JavaScript 中的SCOPE
在没有范围的浏览器控制台代码中:花费大量时间: 测试:1154.19ms
下面的代码将保存在人口稠密的窗口对象中,这将需要时间来解析;
console.time("Test");
for(var i=0; i <2500000; i +=1 ){
// loop around
}
console.timeEnd("Test");
Run Code Online (Sandbox Code Playgroud)
在具有范围的浏览器控制台代码中:花费更少的时间测试:3.06ms
下面的代码将保留在 JavaScript 范围内,并且范围几乎为空 ,因此时间更少
function rocket(){
console.time("Test");
for(var i=0; i <2500000; i +=1 ){
// loop around
}
console.timeEnd("Test");
}
rocket()
Run Code Online (Sandbox Code Playgroud)
在Nodejs REPL中:没有范围的代码:测试:14ms
意外的是,nodejs最外部的作用域包含一些变量
console.time("Test");
for(var i=0; i <2500000; i +=1 ){
// loop around
}
console.timeEnd("Test");
Run Code Online (Sandbox Code Playgroud)
在Nodejs REPL中:代码范围:测试:2ms
下面的代码将保留在 JavaScript 范围内,并且范围几乎为空 ,因此时间更少
function rocket(){
console.time("Test");
for(var i=0; i <2500000; i +=1 ){
// loop around
}
console.timeEnd("Test");
}
rocket()
Run Code Online (Sandbox Code Playgroud)
结论:这一切都归功于JavaScript 中的SCOPE和SCOPING是由函数完成的
意味着如果你创建新函数,大括号 {}内的位置被称为SCOPE,它最初是空的,如果你在这个范围内创建变量,它将不需要时间来执行
| 归档时间: |
|
| 查看次数: |
4453 次 |
| 最近记录: |