簡體   English   中英

Node.js上性能繁重的算法

[英]Performance heavy algorithms on Node.js

我正在創建一些非常重要的算法,例如進化和人工智能。 對我來說重要的是我的更新函數經常被調用(精度),而我無法讓setInterval以每毫秒一次的速度更新。

最初我想使用while循環,但我不確定那些阻塞循環是Node.js環境中可行的解決方案。 如果我遇到“無限”循環,Socket.io的socket.on(“id”,cb)會起作用嗎? 我的代碼是否需要返回Node.js以檢查所有事件,還是自動完成?

最后(但並非最不重要),如果while循環確實會阻止我的代碼,那么在我的更新函數之間獲得非常低的delta時間的另一個解決方案是什么? 我認為線程可以提供幫助,但我懷疑它們是否可行,我的Socket.io服務器和其他類需要以某種方式進行通信,而“其他類”我的意思是主要的World類,它有一個需要獲取的更新方法調用並執行繁重的工作,以及我的服務器使用的getInfo方法。 我覺得大多數時候程序只是坐在那里,等待間隔開火,浪費時間而不是做計算......

另外,我想知道Node.js是否適合這些類型的任務。

您可以使用child_process.fork在單獨的線程中執行havy算法,並通過child.on('message', function (message) { });在主線程中等待結果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!' });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM