[英]Performance of 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更快都使用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中的SCOPE和SCOPING都是由函數完成的
意味着如果你創建新函數, 花括號{}內的位置被稱為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.