为什么说Node.js效率高?

我的理解是,传统的java、php 会创建新的线程来处理阻塞的任务,

对于Node.js

clipboard.png
从这张图来看, 在事件队列中 还是把那些阻塞的任务交给了线程池中的线程来处理阻塞事件了啊,为什么说Node.js效率很高?

阅读 5.5k
5 个回答

你的疑惑在于:
Node 线程池中的线程和 PHP 中多线程来处理事件,为什么 Node 快?

PHP 在并发开启多线程时,需要配套使用的资源和处理的事情相对更多。
而且需要自己编写相关逻辑进行多线程操作,不过你确定在自身大量消耗 CPU 的情况下它依旧这样做?

Node 是天然的呆,新鲜的专门用来处理 IO ,没有历史包袱下的冗余代码。
它CPU消耗低,给东西就处理,多点不过量也直接接收,之后根据具体事情看是否应该创建相应线程得到结果后返回。

如你所说,这样CPU效率就高了,不用阻塞等待IO,可以继续执行其他代码。

Nodejs 的优势是 事件驱动,也就是异步操作

比如,多文件IO操作,Nodejs 可以异步读取,当读取完之后,调用事件监听函数,每个文件的IO事件的监听和执行是分开的。而不用像 java 里去启动多个进程,每个进程单独做一个文件IO操作。

其实并不高,快就快异步处理

能够满足一般情景下的要求,就像10个人排队进门和10个人蜂拥而上。node满足这个10人同时进门。但如果场景是100个人同时进门,内存狂飙,那node就挂了。如果是java,虽然慢点,但至少不会挂。

简单来说,node快就快在同时处理,不用一个一个等。
java这些慢就慢在需要一个一个来,不能急。不过现有很多框架支持可以让java/php执行异步。

效率很高的呀,它一个runtime级别的东西,拿来对标的都是Java这种语言级,……所以jvm存在感就这么弱么?另外javascript上手快人数多,也是个优势。至于和这个和那个比较的那些,都是宣传嘛不要在意。


我觉得去看IO这块更有意义吧。可以参考下朴灵老师的初探Node.js的异步I/O实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题