Node.js上的高性能算法

Performance heavy algorithms on Node.js

本文关键字:高性能 算法 js Node      更新时间:2023-09-26

我正在创建一些性能非常高的算法,例如进化和人工智能。对我来说重要的是,我的更新函数经常被调用(精度),我只是不能让setInterval以每毫秒一次的速度更新。

起初,我只想使用while循环,但我不确定这些类型的阻塞循环在Node.js环境中是否是可行的解决方案。如果我遇到一个"无限"循环,Socket.io的Socket.on("id",cb)能工作吗?我的代码是否需要以某种方式返回Node.js,让它检查所有事件,还是自动完成?

最后(但并非最不重要的是),如果while循环确实会阻塞我的代码,那么在我的更新函数之间获得非常低的增量时间的另一个解决方案是什么?我认为线程可能会有所帮助,但我怀疑它们是否可行,我的Socket.io服务器和其他类需要以某种方式进行通信,我所说的"其他类"指的是主World类,它有一个需要调用的更新方法,并完成繁重的工作,还有一个我的服务器使用的getInfo方法。我觉得大多数时候程序只是坐在那里,等待间隔启动,浪费时间而不是进行计算。。。

另外,我想知道Node.js是否适合这类任务。

您可以使用child_process.fork在单独的线程中执行havy算法,并通过child.on('message', function (message) { }); 在主线程中等待结果

app.js

var child_process = require('child_process');
var child = child_process.fork('./heavy.js', [ 'some', 'argv', 'params' ]);
child.on('message', function(message) {
     // heavy results here
});

heavy.js

while (true) {
    if (Math.random() < 0.001) {
        process.send({ result: 'wow!' });
    }
}