Node.js 和 io.js - 在性能上很不同

jopen 9年前發布 | 10K 次閱讀 Node.js

對于相同的代碼你可能會遇到的性能相差5倍以上,這取決于你使用的是node還是io.js。

首先,讓我說的更明白點。這不是也不可能是綜合測試。每一個引用都是不一樣的。我的發現可能或者不可能使用與你的案例,這取決于你的Node引用是做什么的。

我的測試

前面的文章中,我使用C,JAVA,Javascript和FreePascal測試了一個很簡單的算法性能尋找prime-numbers和Sieve of Eratosthenes。為了測試Javascript,我基于Node選擇三種不同的實現算法,包括普通陣列,輸入陣列或緩沖。

今天我將使用相同的標準來說明node.js與io.js之間有多大的性能差距。對于你們中那些對io.js還不了解的人,io.js是node的一個分支。

我將使用在我前面文章中出現的相同的代碼。你們能夠在文章的結尾找到它。

Node和io.js有一個重要的共同點。他們都依賴于Chrome的V8 Javascript引擎。但是他們使用的是不同的V8版本。所以,當我們比較Node和IO.js的時候,其實我是比較他們使用的不同版本的Chrome V8 JavaScript引擎。

在 我的前一個測試中,我用的Node0.10.32,因為這是我使用的Linux發新版OpenSuse13.2自帶的。但是在今天的測試中,我將使用 Node 0.10.35和io.js 1.0.2,因為他們是最新的發布版。是的,我知道io.js描述該版本為“不穩定”,但它是我唯一能獲取的版本。

以運行在Intel i7-4771 3.5GHz上的64位OpenSuse 13.2系統為測試環境(作者話癆,還順帶提了一下自己之間寫的文章中也用了同樣的方法),前后測試了7次,測試結果(時間)取中位數,結果如下:


Node.js 0.10.35      io.js 1.0.2
Buffer 4.259 5.006
Typed-Array 4.944 11.555
Regular Array    40.416 7.359

(時間單位為秒)

如你所見,Node和io.js對typed-array和regular array性能的變化讓人瞠目。

操作buffer,io.js比Node.js多花18%的時間。對這個結果來說不好不壞,無需操心。

對type-array的測試結果顯示Node.js、io.js兩者差距顯著:后者所費時間超過前者的兩倍!

對regular array的測試卻得出了相反的結果,而且更加明顯:Node.js所費時間超過了io.js的5倍!

它們性能差異如此之大讓我深感煩擾。作為如此成熟的產品,V8 JS引擎在不同版本上所表現的差異實在大。 我只能忍受性能伴隨版本更新一直提升的產品,但上述測試數據表明性能有可能適得其反,這實在不該發生。

結論

難決勝負!Node和io.js相互間時有趕超。但得牢記一點:這個小測試還和實際應用相差甚遠呢。

據我所悉,就連不同版本的Node都會有不同。曾記得一個開發版的Node在處理buffer的性能上卻有下降表現,參考issue on GitHub.

如果項目部署于AWS或Azure的多臺server上,CPU開銷較重,那么這個問題將十分重要。如果application在你所用的Node/io.js上的性能很差,那你得需要更多的server,這將讓你更費銀子。

本文濃縮成一句可取的話即:時刻牢記,測試你的代碼在不同版本Node/io.js上的性能

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!