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 v8引擎

注意

平均速度

  Google Chrome - 1518.021ms Node.js - 4 ms 

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

在Web浏览器(Chrome)中,声明variablesi在任何函数作用域之外使其成为全局variables,因此绑定到窗口对象。 因此,在Web浏览器中运行此代码需要在for循环的每次迭代中重复parsing大量填充的窗口名称空间内的属性。

然而,在Node.js中,声明任何函数范围之外的variables只能将它绑定到模块范围(而不是窗口对象),因此可以更容易,更快地解决问题。

当我们将上面的代码封装在函数中时,我们会得到或多或less相同的执行速度。

由于JavaScript中的范围

没有范围的 浏览器控制台代码中 :花费 大量的时间: testing:1154.19ms

下面的代码将被保存在大量填充的窗口对象中 ,这将花费时间来解决;

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

范围内的 浏览器控制台代码 :花费 更less的时间testing:3.06毫秒

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

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

Nodejs REPL :代码没有范围: testing:14毫秒

意外但是nodejs最外层的作用域包含了一些variables

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

Nodejs REPL :代码范围: testing:2ms

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

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

结论:这全部归功于JavaScript中的SCOPESCOPING是由函数完成的

意思是如果你创build了新的函数, curled brackets {}内的地方被称为SCOPE ,它最初将是空的,如果你在这个范围内创buildvariables,将不会花时间来执行

现在远没有那么戏剧化,但是我的testing从5.417ms降到了2ms。 当我使用更大的循环和函数包装时,Node和Chrome上的值几乎相同。

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