Node.js和io.js性能對決
英文原文:Performance Showdown: Node.js vs. io.js v2.0.0
我們注意到 io.js v2.0.0 RC 版公告中有些有趣的內容。這個社區版的 Node.js 同樣基于 V8 引擎實現,而且主版本提交的頻率遠高于它的父項目(Node.js)。
就像我們之前提到的,之前我們熱衷于用 Node.js 開發了 Raygun API,以確保在高負載情況下達到盡可能短的響應時間,給我們的用戶提供最佳的服務。之前的一片博客比較了一下 Node.js 與 io.js 的性能,后來 io.js V2 版本發布了,我們準備重溫下不同情況下的性能測試。
配置
像之前一樣,下面測試綜合了 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 從 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 中表現如何:
測試結果 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 到 io.js 最新版本上有 14.8% 的速度提升-差距很大。如果你看過最新的 JS 后端框架,顯而易見 io.js 有了相當的性能改進。當在一個 VM 集群運行 Node,根據規模,這個提升也許能少用幾臺機器及相應的設施成本 – 全都免費。