Google chrome vs nodejs(v8)的性能?
例
console.time("Test"); for(var i=0; i <2500000; i +=1 ){ // loop around } console.timeEnd("Test");
上述代码在nodejs
运行faster
比google 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中的SCOPE和SCOPING是由函数完成的
意思是如果你创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);
- Chrome浏览器/火狐浏览器发送两个邮件正好5秒钟,只有一个调用来获取Nodejs 8.0.0服务器
- Access-Control-Allow-Origin不允许源http:// localhost:3000
- 为什么在{{} + 1`在Chrome和Firefox中获得数字1,而在Node.js中使用' 1'?
- Chrome DevTools错误:“无法保存到临时variables。”
- 针对超时POST请求的浏览器重试行为不一致
- 导航页面,直到呈现最后一帧不networkidel
- 如何从程序自动生成一个铬扩展程序?
- 如何从Node JS应用程序获取Chrome中的当前url
- 在nodejs和chrome中让vs性能