按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。
7年前关闭。
您将什么视为CPU密集型任务。就……而言,例如是一种算法/代码(与其说是像视频编辑之类的用例,不如说是用例)。原因似乎是不使用NodeJS的主要原因,我真正喜欢的东西主要是CPU密集型任务。那算什么呢?例如,它是排序,搜索,图形遍历还是矩阵乘法?
诸如“密集型”或“昂贵”之类的术语是相对的,并不是什么活动总是占用大量CPU的。一般来说,不是I / O的都是CPU。而且I / O在node.js中是异步的,所以不是问题。因此,除了I / O昂贵之外,我们一无所有。
您选择一般模式的方法是明智的。排序,搜索甚至算法通常都受CPU限制。当然,您无法消除CPU使用率,但是如果您可以对数据库进行排序而不是对应用程序代码进行排序,则可能会更好。
我也会注意大型循环。一个不会触发任何异步事件的循环是一个瓶颈。当然,不能完全避免循环。它们是编程中不可或缺的事实。如果循环很短,那就没问题了。如果找到运行10,000次的循环,则可能需要考虑使用setTimeout,process.nextTick或单独的节点进程将其分解。
10,000人被任意挑选。这取决于循环的作用。您的里程可能会有所不同。