我想处理长度约为 100 000 的数组,而不会给 CPU 带来太多负载。我研究了流并偶然发现了 highlandjs,但我无法使其工作。
我也尝试过使用承诺和分块处理,但它仍然给 CPU 带来了很大的负载,如果需要,程序可能会很慢,但不应该给 CPU 带来负载
我想处理长度约为 100 000 的数组,而不会给 CPU 带来太多负载。我研究了流并偶然发现了 highlandjs,但我无法使其工作。
我也尝试过使用承诺和分块处理,但它仍然给 CPU 带来了很大的负载,如果需要,程序可能会很慢,但不应该给 CPU 带来负载
使用将 Javascript 作为单线程运行的 node.js,如果您希望服务器最大程度地响应传入请求,那么您需要从主 http 服务器进程中删除任何 CPU 密集型代码。这意味着在其他一些进程中执行 CPU 密集型工作。
有很多不同的方法可以做到这一点:
child_process
模块启动另一个专门为执行 CPU 密集型工作而构建的 nodejs 应用程序。如果您不经常进行这种 CPU 密集型工作,那么 #1 可能是最简单的。
如果您出于其他原因需要扩展(例如处理大量传入请求)并且您不经常执行 CPU 密集型工作 #2。
如果您经常执行 CPU 密集型工作,并且您希望传入的请求处理始终具有最高优先级,并且您愿意让 CPU 密集型工作花费更长的时间,那么 #3(工作队列)或 #4(线程)是可能是最好的,你可以调整工人的数量来优化你的结果。