Node.js 和 io.js 效能對決

oschina發表於2015-05-16

我們注意到 io.js v2.0.0 RC 版公告中有些有趣的內容。這個社群版的 Node.js 同樣基於 V8 引擎實現,而且主版本提交的頻率遠高於它的父專案(Node.js)。

就像我們之前提到的,之前我們熱衷於用 Node.js 開發了 Raygun API,以確保在高負載情況下達到儘可能短的響應時間,給我們的使用者提供最佳的服務。之前的一片部落格比較了一下 Node.js 與 io.js的效能,後來 io.js V2 版本釋出了,我們準備重溫下不同情況下的效能測試。

效能對決:Node.js vs io.js v2.0.0

配置

像之前一樣,下面測試綜合了micro-benchmarks, caveat emptor, huge grain of salt 等等。不論如何,下面的圖表提供了幾個有趣的結果,值得思考一番,也給你自己的實地測試提供一個參考,而且以後你可能會獲得一個顯著的速度提升。

測試環境為:64-bit Ubuntu VM ApacheBench。配置為以100個併發執行20000個請求,結果為5次執行的平均值。

我們測試了2個版本的 node 跟2個版本的 io.js。node 是v0.10.38(0.10分支的最新版本)跟v0.12.2(現有最新的版本)

io.js 我們比較了v1.8.1(1.x分支的最新版本)與v2.0.0(最新發布的版本)。

測試使用 http module 建立了一個簡單的伺服器,設定其在請求時返回一個 JSON。結果如下:

效能對決:Node.js vs io.js v2.0.0

有趣的是,我們注意到 node 從0.10到0.12效能下降了, 而 io.js 1.x 分支與 node 0.10 相當,但是v2.0.0 就高出了很多。

當返回一個 Raw 格式響應時, 該測試顯示 io.js v2.0.0 比 node 0.12要快14%! 他們都比自己的前一個版本有了5%的速度提升。結果還不錯,不過我們有更多的東西可以測試。

Express.js

Express 曾經且依然是快速構建一個 web 專案後端的大眾選擇。 上次我們也介紹了一下他的效能表現,讓我們看下它在 node 0.12 與 io.js v2.0.0 中表現如何:

效能對決:Node.js vs io.js v2.0.0

測試結果 io.js v2.0.0 要快 4.5% – 在一個老框架上很不錯了 (要知道 JS 的生態變化很快啊)!

Koa.js 在 Node 和 io.js 上的比較

許多新框架正在爭奪 JS 輕型框架的一席之地,這裡我們對一些比較受歡迎的進行基準測試,其一就是Koa.js,它正是 Express.js 的作者所寫。

使用 Koa 最大的好處是可以使用 ES6 的特性-包括使用 generators 和 yield 語法開啟非同步程式碼(不用該死的回撥)。這個基準測試使用[node --harmony]引數啟動。涉及一個簡單路由的邏輯,並輸出一段 HTML。

讓我們觀察 Koa 在 Node 和 io.js 上的執行情況:

效能對決:Node.js vs io.js v2.0.0

從 Node 到 io.js 最新版本上有14.8%的速度提升-差距很大。如果你看過最新的 JS 後端框架,顯而易見 io.js 有了相當的效能改進。當在一個 VM 叢集執行 Node,根據規模,這個提升也許能少用幾臺機器及相應的設施成本 – 全都免費。

相關文章