簡體   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