繁体   English   中英

Google Chrome与nodejs(v8)的表现如何?

[英]Performance of Google chrome vs nodejs (v8)?

在此输入图像描述

     console.time("Test");
     for(var i=0; i <2500000; i +=1 ){
             // loop around
     }
     console.timeEnd("Test");

上述代码在nodejs运行fastergoogle chrome faster 为什么node.js比谷歌chrome更快都使用chrome v8引擎

注意

平均速度

 Google Chrome  - 1518.021ms 

 Node.js - 4 ms

关于差异执行速度的任何想法?

在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");

具有范围的 浏览器控制台代码中 :花费 更少的时间测试:3.06ms

下面的代码将保存在JavaScript范围内, 范围几乎为空,因此时间更短

function rocket(){
    console.time("Test");
     for(var i=0; i <2500000; i +=1 ){
             // loop around
     }
     console.timeEnd("Test");
}
rocket()

Nodejs REPL中 :没有范围的代码: 测试:14ms

意外但是nodejs大多数外部范围包含一些变量

 console.time("Test");
 for(var i=0; i <2500000; i +=1 ){
         // loop around
 }
 console.timeEnd("Test");

Nodejs中REPL :具有范围的代码: 测试:2ms

下面的代码将保存在JavaScript范围内, 范围几乎为空,因此时间更短

function rocket(){
    console.time("Test");
     for(var i=0; i <2500000; i +=1 ){
             // loop around
     }
     console.timeEnd("Test");
}
rocket()

结论:由于JavaScript中的SCOPESCOPING都是由函数完成的

意味着如果你创建新函数, 花括号{}内的位置被称为SCOPE ,它最初将为空,如果你在这个范围内创建变量,它将花费时间执行

它现在远没有那么引人注目,但我确实从你的测试中的5.417毫秒下降到2毫秒。 当我使用更大的循环和函数换行时,我在Node和Chrome上具有接近绝对相同的值。

(function(){
console.time("Test");
for(var i=0; i <10000000000; i +=1 ){
     // loop around
}
console.timeEnd("Test");
}).call(this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM