常言道 V8 超快 XD
所以心中一直有疑惑,到底是快到哪裡去 = =
node.js 真的有比其他的快嘛?
所以做了一點小實驗
比較 node.js 跟 php 的 performance
採用的軟體如下
- Linux Kernel : 2.6.38-gentoo-r3 compiled with non-preemptive
- web server : nginx 0.8.53
- php version : PHP 5.3.6-pl1-gentoo running on php-fpm with port 8000
- node.js : v0.4.7
php 的程式碼如下
我們利用 ab (apache benchmark program)
Concurrency Level 是 200
Total 打 10000 次
得到的資訊如下
這裡可能會有人有疑惑說為什麼 php 不要用 unix socket 要用 tpc/ip socket 跑
因為我發現 php-fpm 綁在 unix socket 結果當 concurrency 是 200 時有一半以上不是回傳 200 ok
但是 concurrency 降到 100 時候又全部 ok
反正怪怪的 後來綁 tcp/ip 的就都 ok 了! (當然效能會折損)
所以 php-fpm 綁 port 8000 然後下面介紹的 node.js 是綁在 port 3000
nginx 都用 proxy_pass mode
而 node.js 的程式如下
結果如下
我大概前後都各跑了 5 次 結果數值都差不多
我們可以發現 node.js on V8 比 php 快一點點 不管在 RPS (Requests per second) 或者是 Processing 上都快一點點
不過比較奇怪的是最長的時間都是三秒多 XD 是 nginx 的問題嘛 - - 承受不了這麼多 request
至於在 CPU 跟記憶體的比較上 我覺得好像差不多耶 沒有很明顯的差距拉出來
然後我又做了一點點小延伸 這次我裝了 node.js 的 framework Express
然後一樣的 output , app.js 的部份程式碼如下
得到的結果是這樣
效能大概降了 30% 有吧 蠻慘的 XD
遠輸於 php 不過我沒有跑 Zend 試看看 我想一但有 framework 上去 不管什麼都會變慢吧
尤其是 routing 最麻煩 所以應該都會慢很多
所以結論是原生的 node.js 是比 php 快一點點的 (約 5%)
後記:
這裡有一篇類似的 不過他打的數量好高 * *
Benchmarking Node.js – basic performance tests against Apache + PHP