]> git.ardis.lu - 4-byte-gen/commitdiff
Periodically pass worker status to main thread
authorArdis Lu <ardisglu@gmail.com>
Thu, 23 Mar 2023 06:45:31 +0000 (23:45 -0700)
committerArdis Lu <ardisglu@gmail.com>
Thu, 23 Mar 2023 06:45:31 +0000 (23:45 -0700)
index.html
worker.js

index a41ca89c150f336a2d33a76cd3db1be5efaa7f1b..e41690f8bb581925b127201d6d8dd243b4de2e14 100644 (file)
     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);
         });
       }
     }
index 43e83083b6f5b69f7f72cdeeff29c2f95928e5b9..96188b4dabace916b4c3cb624d1aa0ad5bbc4515 100644 (file)
--- 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 });
 });
This page took 0.037273 seconds and 4 git commands to generate.