Node.js上的高性能算法
Performance heavy algorithms on Node.js
我正在创建一些性能非常高的算法,例如进化和人工智能。对我来说重要的是,我的更新函数经常被调用(精度),我只是不能让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!' });
}
}
相关文章:
- 循环比赛位置算法
- javascript扫雷器floodfill算法不能正常工作
- Node JS中的排名系统算法
- 查找仅适用于原始图像的图像放大算法的名称
- 在数组的 2/3 上调用自身的排序算法
- Luhn算法的实现
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 加速单纯形算法
- 最短路径算法js错误
- Javascript图形可视化工具包,具有高性能(500-1000个节点)
- 代码战争中的算法混乱
- 用于自动放置流程图形状的算法
- PHP或JavaScript的基本遗传算法开源代码
- 用Javascript实现算法
- 堆中for循环的奇怪行为's算法
- 一种从随机数的序列中查找值的简单算法
- Node.js上的高性能算法
- JavaScript排序算法不起作用 - 任何明显的我做错了
- 需要使用JavaScript实现我的算法
- 用于计算产品价格的JavaScript构建和算法