標籤:

php的性能要比node.js高很多嗎?

本人在centos系統 i5 8核16G環境中ab測壓php5.6 yaf 框架中處理從資料庫中讀取用戶個人信息的業務邏輯 10萬的http請求,4秒多就全部處理完了 tps 達2萬多 ,而node.js 僅僅輸出hello word 的情況下10萬的http請求用了將近15秒才處理完,tps才7k,這是否意味著php的性能要比node.js要高,順便問一句php-fpm 中的work進程是採用多線程的方式處理http請求的嗎?

php

node.js


看看在什麼場景中,如果是CPU密集型(圖片處理)應用的話PHP會高些,這是因為PHP-FPM會使用多進程來處理用戶請求,而node.js是單進程單線程的,所以node.js在CPU密集型應用表現得會很差。

但node.js的長處在於I/O密集型(資料庫讀寫)應用,node.js天生就是非同步非阻塞的。非同步非阻塞的優點在於能夠在單進程單線程處理多個socket I/O,相對於PHP的多進程模式可以減少進程的上下文切換消耗,而且使用的系統資源也會比PHP少。所以在I/O密集型應用中,PHP的並發數可能不如node.js。


剛接觸Rust的時候,用Rust做了一個很簡單的伺服器,拿來和NodeJs對比,發現比NodeJs慢,Rust不是號稱比C++還快嗎?

放到Rust社區,Rust項目的核心人員說,是因為編譯的時候沒開啟優化模式。然後再用wrk做測試,果真比NodeJs快了幾微秒,興奮的跟那個人說,他反而覺得驚訝,他說NodeJs是專門針對網頁伺服器設計的,進行了很深度的優化。在網頁伺服器這方面,應該是第一。


題主能認真點么,php用php-fpm多進程,node.js就單進程來剛是么,你怎麼不試試cluster模塊呢,怎麼不用pm2呢,這麼比公平么?

還有大家答題的時候認真點好嗎,說js單線程我認了,還有好幾個說js單進程。單線程是不能利用多核,可沒人說不能開多個進程,php-fpm這麼玩,pm2也能這麼玩

順便說一句,php版本該上7.1了,速度提升了很多,node最好上最新版


8核理論上要放8個進程的node.js才是公平的。

自己寫麻煩的話,可以試一下用pm2管理進程。

本來想幫題主測試一下的,突然發現自己的一元學生機是單核的(哭


你應該把測試時的內存消耗和CPU消耗貼出來
如果nodejs的消耗和php消耗差不多,那就認了樓主說的


謝邀。

你做這樣的比較是在浪費生命。LMGTFY


你這樣比不出什麼結論,你這樣相當於一個多進程的c程序和單進程的node比,沒什麼用。如1樓所說場景不一樣適用面也不一樣。


樓主給node.js算分的時候應該*8,在整體打個七折,算下來結果再比,目測是該版本PHP的兩倍以上


你用nodejs的cluster, 起8個worker,這樣和php比,才是公平比法。

如果nodejs不更快,你又是漂亮妹子,我請你吃飯!


我以前是php開發的,後來轉了node。單從語言性能來說node比php高很多。node8.1.2對比php7.1.7,在我的pc機上一個冒泡排序,node性能是php的10倍,字元串處理,node是php的40倍以上。所以網上說node不適合cpu密集型,但至少比php適合太多,你還可以把 cpu密集任務放到一個單獨的node進程中去處理。所以node語言本身性能是沒有問題的,如果你寫的程序比php還慢,說明本身編程功夫不紮實,就像拿著倚天劍的滅絕師太依然會被張三丰,張無忌吊打一樣。

還有node作為web伺服器是開啟的進程數並不是網上建議的數字(等於cpu的數目)就好,你要在自己的伺服器上面實際測試出來。我在機器上開的進程數目是cpu數目的8倍,處理請求性能是只開cpu個進程的4倍,太大和太小都會明顯降低處理性能。實際到底開幾個進程,不同機器和不同應用都是不一樣的,你要去實際 測試出來。


哪個性能好不太了解。

但是資料庫自身的查詢結果是有緩存的,當查第2條同樣的語句時,mysql實際返回的是緩存里的結果,並沒有真查。我只知道這個。


nodejs佔用內存不變(在處理同一業務邏輯時),php佔用內存不穩定(可能跟多線程有關,連接數越多,內存佔用越多)

在一般情況node.js的處理能力2倍於php。在並發數達到一定程度時,php可能會掛,可能源於大並發下多線程對內存資源的佔用是不可測且不可控的。


js是單進程吧,應該用不了多核,你試試nginx分發到不同的node.js


推薦閱讀:

PHP高效獲取遠程圖片尺寸和大小的實現方法
PHP中的表名要不要define?
為什麼好多人寫php的時候總是判斷反邏輯呢?
9段PHP實用功能的代碼推薦

TAG:PHP | Nodejs | Nginx |