2012-08-08 71 views
2

我是Node.js的新手,对于看起来像noob的问题我感到抱歉,但是我真的会对你的建议感觉更好。什么是Node.js中的CPU密集型任务?

我想我掌握了Node.js的大部分基础知识。我知道它是单线程的,因此所有的I/O作业都是异步的,以避免阻塞事件循环。

我也明白,由于这种单线程性质,Node.js不太适合CPU密集型任务,它会阻塞事件循环。

我的问题很简单:我正在研究websocket应用程序,并且在大多数请求中,我必须执行一些计算循环。根据我的测试,这个循环可能需要30到80毫秒才能完成。我应该认为这是一项CPU密集型任务吗? (如果是的话,我想我应该尝试将它委托给一个子进程,或者用process.nextTick将计算分成几个部分)。

+0

我不知道它是否是CPU密集型的,但是如果你想要更好的性能,那么你可以考虑编写C/C++插件。 – freakish 2012-08-08 06:42:19

+1

您还应该考虑您希望处理的并发用户数量。 10个用户30-80ms可能不是什么大不了的事情,但对于成千上万的用户来说,这是一个不同的交易。 – 2012-08-08 13:45:44

回答

1

这实际上取决于你在寻找什么样的QOS。 我会说,对于个人projet这很好。如果你使用websockets进行游戏,例如这可能会是杀手锏。

模块cluster可以用来解决这个问题。这是更多的工作,但该模块使得尽可能容易地获得一组进程和它们之间的通信。