鍍金池/ 問答/HTML5  Java  Python  HTML/ 為什么說Node.js效率高?

為什么說Node.js效率高?

我的理解是,傳統(tǒng)的java、php 會(huì)創(chuàng)建新的線程來處理阻塞的任務(wù),

對(duì)于Node.js

clipboard.png
從這張圖來看, 在事件隊(duì)列中 還是把那些阻塞的任務(wù)交給了線程池中的線程來處理阻塞事件了啊,為什么說Node.js效率很高?

回答
編輯回答
蝶戀花

Nodejs 的優(yōu)勢(shì)是 事件驅(qū)動(dòng),也就是異步操作。

比如,多文件IO操作,Nodejs 可以異步讀取,當(dāng)讀取完之后,調(diào)用事件監(jiān)聽函數(shù),每個(gè)文件的IO事件的監(jiān)聽和執(zhí)行是分開的。而不用像 java 里去啟動(dòng)多個(gè)進(jìn)程,每個(gè)進(jìn)程單獨(dú)做一個(gè)文件IO操作。

2018年8月18日 21:17
編輯回答
心夠野

你的疑惑在于:
Node 線程池中的線程和 PHP 中多線程來處理事件,為什么 Node 快?

PHP 在并發(fā)開啟多線程時(shí),需要配套使用的資源和處理的事情相對(duì)更多。
而且需要自己編寫相關(guān)邏輯進(jìn)行多線程操作,不過你確定在自身大量消耗 CPU 的情況下它依舊這樣做?

Node 是天然的呆,新鮮的專門用來處理 IO ,沒有歷史包袱下的冗余代碼。
它CPU消耗低,給東西就處理,多點(diǎn)不過量也直接接收,之后根據(jù)具體事情看是否應(yīng)該創(chuàng)建相應(yīng)線程得到結(jié)果后返回。

2018年1月9日 23:21
編輯回答
選擇

其實(shí)并不高,快就快異步處理。

能夠滿足一般情景下的要求,就像10個(gè)人排隊(duì)進(jìn)門和10個(gè)人蜂擁而上。node滿足這個(gè)10人同時(shí)進(jìn)門。但如果場(chǎng)景是100個(gè)人同時(shí)進(jìn)門,內(nèi)存狂飆,那node就掛了。如果是java,雖然慢點(diǎn),但至少不會(huì)掛。

簡(jiǎn)單來說,node快就快在同時(shí)處理,不用一個(gè)一個(gè)等。
java這些慢就慢在需要一個(gè)一個(gè)來,不能急。不過現(xiàn)有很多框架支持可以讓java/php執(zhí)行異步。

2018年4月16日 00:05
編輯回答
我不懂

如你所說,這樣CPU效率就高了,不用阻塞等待IO,可以繼續(xù)執(zhí)行其他代碼。

2018年4月12日 13:13
編輯回答
毀與悔

效率很高的呀,它一個(gè)runtime級(jí)別的東西,拿來對(duì)標(biāo)的都是Java這種語言級(jí),……所以jvm存在感就這么弱么?另外javascript上手快人數(shù)多,也是個(gè)優(yōu)勢(shì)。至于和這個(gè)和那個(gè)比較的那些,都是宣傳嘛不要在意。


我覺得去看IO這塊更有意義吧??梢詤⒖枷聵沆`老師的初探Node.js的異步I/O實(shí)現(xiàn)

2018年7月26日 18:24