andywer / andywer/threads.js

workers getting slow on every call

オープン
#409 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug question
主要言語
TypeScript
スター
3.5k
フォーク
173
PR マージ指標
30日以内にマージされた PR はありません

説明

I use 3 workers to concurrently loop over a large array and return their levenshtein distance. They were fast at the beginning. But get slow on every function call.

```js
//index.js
...
const app = express();
const { spawn, Thread, Worker } = require('threads');
const workers = [await spawn(new Worker("./work.js")), await spawn(new Worker("./work.js")), await spawn(new Worker("./work.js"))];

for (var i = 0; i < 3; i++) {
const bigarray = [];
for (var j = 0; j < 135000; j++) {
bigarray.push(Math.random().toString());
}
workers[i].init(bigarray);
}

app.post('/', (req, res) => {
const query = req.body.query || Math.random().toString();
const promises = [];
for (const x of workers) {
promises.push(x.result(query));
}
Promise.all(promises).then(p => res.send(JSON.stringify(p)));
});

```

```js

//work.js

const { expose } = require("threads/worker");
const db = {};
const leven = require('leven');

expose({
init(array) {
db.data = array;
return;
},
result(query) {
const results = db.data.map(x => leven(x, query));
return { bestMatch: Math.min.apply(null, results) };
}
})
```

The above API gets 2 calls in 1000ms. The console also warns for reaching max event listeners.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。