function fibonacci(n) { if (n == 0 || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } // 接收主线程发送过来的任务,并开始查找斐波那契数 process.on("message", n => { var res = fibonacci(n); // 查找结束后通知主线程,以便主线程再度进行任务分配 process.send(res); }); 入口代码:cluster.js // 引入主线程js,并执行暴露出来的run方法 const master = require("./master"); master.run();
执行node cluster.js 查看结果
在我的电脑上显示结果为10724ms(电脑配置不同也会有差异)。
process: 500/500
👏 👏 👏 👏 👏 👏 👏 👏 👏 👏
任务完成,用时: 10724ms
👏 👏 👏 👏 👏 👏 👏 👏 👏 👏
结果
进过上面两种方式的对比,结果很明显,多进程处理速度是单线程处理速度的 4 倍多。而且有条件的情况下,如果电脑 CPU 足够,进程数更多,那么速度也会更快。
如果有更好的方案或别的语言能处理你的需求那就更好,谁让 Node.js 天生就不适合 CPU 密集型应用呢。。