From abddb3e17574d5865c116cc6400f8cdb0d4c9b6f Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Wed, 22 Mar 2023 23:45:31 -0700 Subject: [PATCH] Periodically pass worker status to main thread --- index.html | 7 ++++--- worker.js | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index a41ca89..e41690f 100644 --- a/index.html +++ b/index.html @@ -402,13 +402,14 @@ function handleStartAll(e) { for (const row of state.values()) { row.worker = new Worker('/worker.js', { type: 'module' }); - row.worker.postMessage({ name: row.name, parametersTypes: row.parametersTypes, minimum: parseInt(minimum.value) }); + row.worker.postMessage({ name: row.name, parametersTypes: row.parametersTypes, seed: row.seed, minimum: parseInt(minimum.value) }); row.worker.addEventListener('message', e => { - const { functionName, hash, counter } = e.data; + const { functionName, hash, counter, completed } = e.data; row.optimizedName = functionName; row.optimizedSelector = hash; row.seed = counter; - updateUi(state) + row.status = completed ? 'Completed' : 'Searching'; + updateUi(state); }); } } diff --git a/worker.js b/worker.js index 43e8308..96188b4 100644 --- a/worker.js +++ b/worker.js @@ -17,20 +17,23 @@ function validate(functionName, minimum) { } } -function calculateOptimizedName(name, parametersTypes, minimum) { - let counter = 0n; +function calculateOptimizedName(name, parametersTypes, seed, minimum) { + let counter = BigInt(seed); let functionName = `${name}_${counter}(${parametersTypes})`; let hash = validate(functionName, minimum); while (!hash) { counter++; functionName = `${name}_${counter.toString(36)}(${parametersTypes})`; hash = validate(functionName, minimum); + if (counter % 1000n === 0n) { + postMessage({ functionName, hash, counter, completed: false }); + } } return { functionName, hash, counter }; } addEventListener('message', e => { - const { name, parametersTypes, minimum } = e.data; - const { functionName, hash, counter } = calculateOptimizedName(name, parametersTypes, minimum); - postMessage({ functionName, hash, counter }); + const { name, parametersTypes, seed = 0, minimum } = e.data; + const { functionName, hash, counter } = calculateOptimizedName(name, parametersTypes, seed, minimum); + postMessage({ functionName, hash, counter, completed: true }); }); -- 2.47.3