✅fizzSearchを並列化する
そこまで高速化する必要ないかなとも思ったが、やっぱり欲しくなったtakker.icon
すぐに検索結果が表示されるようになれば、検索中かどうか出さなくても良くなる
結構タイムラグが発生するときがそこそこある
実装
各補完機能のbackground scriptで、論理プロセッサの数だけWebWorkerを事前に作っておく 検索を実行するごとに呼び出されるfizzSearch函数内でWebWorkerを作ってしまうと、何度も再作成が走って重くなる こんな感じかな
code:parallelWork.js
// list: 補完候補が入ったリスト
const workerNum = window.navigator.hardwareConcurrency;
const workers = range(workerNum).map(_ => new Worker('worker.js'));
// listをworkerNumだけ分割する
const jobs = range(workerNum).map(i =>
list.slice(i,i+Math.floor(list.length/workerNum)+1))
// 処理を投げる
.map((list, i) =>
return new Promise((resolve, reject) => {
workersi.addEventListener('message', message => { resolve(message.data);
}));
// 処理が帰ってくるのを待つ
await Promise.all(jobs).then(...);
17:38:29 実装終了
↑のままではダメだった(詳細はコード見ろ)
うまく動いてくれた
体感ちょっとだけ早くなった気がする
17:56:37 実装終了
バグも直した