]> git.codecow.com Git - nano-pow.git/commitdiff
Implement execution loop for runs and scoring.
authorChris Duncan <chris@codecow.com>
Fri, 22 May 2026 19:54:45 +0000 (12:54 -0700)
committerChris Duncan <chris@codecow.com>
Fri, 22 May 2026 19:54:45 +0000 (12:54 -0700)
test/index.html

index 2a17bc78c1e14b9b3de2dfd4dbad5133172d4492..6c871779a3edf28f74ea4390b1c6ab5e588473bf 100644 (file)
@@ -179,25 +179,15 @@ SPDX-License-Identifier: GPL-3.0-or-later
                        }
 
                        console.log(`%cNanoPow (${type})`, 'color:green', `Calculate proof-of-work for ${size} unique send block hashes`)
-                       const times = []
-                       for (let i = 0; i < size; i++) {
-                               document.getElementById('status').innerHTML = `TESTING IN PROGRESS ${i}/${size}<br/>`
-                               const hash = random()
-                               let result = null
-                               const start = performance.now()
-                               try {
-                                       result = await NanoPow.work_generate(hash, { api, difficulty, effort, debug: isDebug })
-                               } catch (err) {
-                                       document.getElementById('output').innerHTML += `Error: ${err.message}<br/>`
-                                       console.error(err)
-                                       return
-                               }
-                               const end = performance.now()
-                               const check = await NanoPow.work_validate(result.work, result.hash, { difficulty, debug: isDebug })
-                               const isValid = (result.hash === hash && check.valid === '1') ? 'VALID' : 'INVALID'
-                               times.push(end - start)
-                               const msg = `${isValid} (${end - start} ms)\n${JSON.stringify(result, ' ', 2)}`
-                               if (isOutputShown) document.getElementById('output').innerHTML += `${msg}<br/>`
+                       document.getElementById('status').innerHTML = `TESTING IN PROGRESS 0/${size}<br/>`
+                       let times
+                       try {
+                               times = await execute(size, difficulty, effort, api, isOutputShown)
+                       } catch (err) {
+                               output.textContent += `Error: ${err.message}`
+                               output.innerHTML += '<br/>'
+                               console.error(err)
+                               return
                        }
                        document.getElementById('output').innerHTML += `<hr/>`
                        document.getElementById('summary').innerHTML += `${JSON.stringify(average(times, type, effort), null, '\t')}<br/>`
@@ -209,20 +199,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
                        console.log(`%cNanoPow ${api}`, 'color:green', `Calculate truncated harmonic mean of the truncated arithmetic rate across ${runs} runs of ${size} samples.`)
                        const rates = []
                        for (let i = 0; i < runs; i++) {
-                               const times = []
-                               for (let j = 0; j < size; j++) {
-                                       document.getElementById('status').innerHTML = `SCORING IN PROGRESS. THIS WILL TAKE A LONG TIME. ${i}/${runs} ${j}/${size}<br/>`
-                                       const hash = random()
-                                       let result = null
-                                       const start = performance.now()
-                                       try {
-                                               result = await NanoPow.work_generate(hash, { difficulty, effort, api })
-                                       } catch (err) {
-                                               document.getElementById('output').innerHTML += `Error: ${err.message}<br/>`
-                                               console.error(err)
-                                               return
-                                       }
-                                       times.push(performance.now() - start)
+                               let times
+                               document.getElementById('status').innerHTML = `SCORING IN PROGRESS. THIS WILL TAKE A LONG TIME. ${i}/${runs} 0/${size}<br/>`
+                               try {
+                                       times = await execute(runs, size, difficulty, effort, api)
+                               } catch (err) {
+                                       document.getElementById('output').innerHTML += `Error: ${err.message}<br/>`
+                                       console.error(err)
+                                       return
                                }
                                const results = Object.values(average(times))[0]
                                const { truncatedRate } = results