效能測評:Ngix_Lua, Node.JS, Python三者效能相當 均比php快近一倍

ourjs發表於2014-02-12

   下面我們來比較一下其他幾種指令碼語言php, lua, python 和 node.js之間的效能:

  1. ngx_lua nodejs php 比較

  我在研究一陣子ngx_lua之後發現lua語法和js真的很像,同時ngx_lua模型也是單執行緒的非同步的事件驅動的,工作原理和nodejs相同,程式碼甚至比nodejs的非同步回撥更好寫一些。

效能測試,100併發
php:17400
nodejs:31197
ngx_lua:32628

  單純做http代理伺服器加上一些簡單的邏輯,似乎ngx_lua的方案更加合適。 引自: PHP vs Node.js vs Nginx-Lua

  以下是從佔用的資源上來分析:

lua php nodejs

  出自:php node lua 由圖中可以看出:

  nodejs佔用CPU比lua高一些,

  nodejs與ngx_lua二者佔用記憶體不變(在處理同一業務邏輯時),php佔用記憶體不穩定(可能跟多執行緒有關,連線數越多,記憶體佔用越多)

  下面猿友對ngix_lua的一些看法:

  xueyangkk

  其實這樣考慮是對的 ! ngx_lua是基於nginx的擴充套件 nginx已經有無數家驗證過 他確實是個可靠的WEB應用。而且ngx_lua 已經有很多廣泛的應用 可以說技術上來說已經很成熟了,你們的平臺是一個OPANAPI的應用 。所以 在這個上 選ngx_lua 是對的 !當然這並不是說NODE不好 !語言沒什麼好壞 !只能從成本 技術成熟度來考慮 !

  jayceefun

  之前使用過章大神openresty, 確實很值得一試, 比node.js易用, 沒有那麼裸, 做的各種效能優化也都是c級別的, 剛出時也是號稱併發超過node.js的. lua確實是很快, 據說是指令碼語言裡最快的了. 不過也有缺點就是lua的檔案處理很弱, 各種庫非常的少, 記得當初的想要個好點的orm都沒有, 還得手寫. 同意樓主說的lua某種程度上真的是跟js很像啊, 當初轉型node.js語言上也基本沒費多少勁. 推薦一個用lua完全模仿node.js寫的一個東西, 叫luvit, 現在完全不成熟, 只有些簡單的http server功能, 但是基礎的效能測試結果是比node.js快2倍還是4倍來的, 很恐怖啊有木有. 

  結論:

  併發請求數lua/nodejs相當,均比php快一倍

  資源佔用上lua最少,nodejs次之,二者對記憶體並不貪婪,php佔用最多且不穩定。

  2. nodejs python php 比較

  國外某猿友做過一個關於php/nodejs/go/scala/python之間的效能比較:API Programming Language Bake-off

  以下測試用例為使用mongodb新增刪除資料時,各個語言每秒處理的最大請求數:

  由上圖可以看出,在併發執行緒達到一定程度時go和php寫的測試指令碼都掛了(go不是號稱最快嗎?)

  另外兩位中國猿友的評測,也證明了這一點,

  1. 測了一下nodejs和php效能

  2. 單伺服器node.js和php效能測試

  在他們的結論中node.js的併發處理能力均二倍於php.

  結論:

  在一般情況下python和node.js的處理能力相當,均2倍於php, 在併發數達到一定程度時,php可能會掛,可能源於多執行緒對記憶體資源的佔用是不可測且不可控的。

相關文章