diff --git a/libloki/test/metrics.js b/libloki/test/metrics.js index cdb934eb7..2cbe75d9c 100644 --- a/libloki/test/metrics.js +++ b/libloki/test/metrics.js @@ -3,9 +3,8 @@ let jobId = 0; let currentTrace = 0 let plotlyDiv; const workers = []; -async function run(messageLength, numWorkers = 1, nonceTrials=100) { +async function run(messageLength, numWorkers = 1, nonceTrials = 100, ttl = 72) { const timestamp = Math.floor(Date.now() / 1000); - const ttl = 4 * 24 * 60 * 60; const pubKey = '05ec8635a07a13743516c7c9b3412f3e8252efb7fcaf67eb1615ffba62bebc6802'; const message = randomString(messageLength); const messageBuffer = dcodeIO.ByteBuffer.wrap(message, 'utf8').toArrayBuffer(); @@ -18,7 +17,7 @@ async function run(messageLength, numWorkers = 1, nonceTrials=100) { jobId += 1; const increment = numWorkers; const index = w; - worker.postMessage([jobId, 'calcPoW', timestamp, ttl, pubKey, data, false, nonceTrials, increment, index]); + worker.postMessage([jobId, 'calcPoW', timestamp, ttl * 60 * 60, pubKey, data, false, nonceTrials, increment, index]); const p = new Promise(resolve => { worker.onmessage = (nonce) => { resolve(nonce); @@ -34,8 +33,8 @@ async function run(messageLength, numWorkers = 1, nonceTrials=100) { workers.forEach(worker => worker.terminate()); } -async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50 }) { - const name = `W:${numWorkers} - NT: ${nonceTrials} - L:${messageLength}`; +async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50, ttl = 72 }) { + const name = `W:${numWorkers} - NT: ${nonceTrials} - L:${messageLength} - TTL:${ttl}`; Plotly.addTraces(plotlyDiv ,{ y: [], type: 'box', @@ -44,7 +43,7 @@ async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50 } }); for (let i = 0; i < iteration; i += 1) { // eslint-disable-next-line no-await-in-loop - await run(messageLength, numWorkers, nonceTrials); + await run(messageLength, numWorkers, nonceTrials, ttl); } currentTrace += 1; console.log(`done for ${name}`); @@ -53,7 +52,7 @@ async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50 } function randomString(length) { let text = ''; - const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (let i = 0; i < length; i += 1) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; @@ -69,9 +68,10 @@ async function startMessageLengthRun() { const messageLengthStart0 = parseFloat(document.getElementById('messageLengthStart0').value); const messageLengthStop0 = parseFloat(document.getElementById('messageLengthStop0').value); const messageLengthStep0 = parseFloat(document.getElementById('messageLengthStep0').value); + const TTL0 = parseFloat(document.getElementById('TTL0').value); for (let l = messageLengthStart0; l < messageLengthStop0; l += messageLengthStep0) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration0, nonceTrials: nonceTrials0, numWorkers: numWorkers0, messageLength: l }); + await runPoW({ iteration: iteration0, nonceTrials: nonceTrials0, numWorkers: numWorkers0, messageLength: l, ttl: TTL0 }); } } async function startNumWorkerRun() { @@ -80,9 +80,10 @@ async function startNumWorkerRun() { const numWorkersStart1 = parseFloat(document.getElementById('numWorkersStart1').value); const numWorkersEnd1 = parseFloat(document.getElementById('numWorkersEnd1').value); const messageLength1 = parseFloat(document.getElementById('messageLength1').value); + const TTL1 = parseFloat(document.getElementById('TTL1').value); for (let numWorkers = numWorkersStart1; numWorkers <= numWorkersEnd1; numWorkers +=1) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration1, nonceTrials: nonceTrials1, numWorkers, messageLength: messageLength1 }); + await runPoW({ iteration: iteration1, nonceTrials: nonceTrials1, numWorkers, messageLength: messageLength1, ttl: TTL1 }); } } async function startNonceTrialsRun() { @@ -92,9 +93,23 @@ async function startNonceTrialsRun() { const nonceTrialsStart2 = parseFloat(document.getElementById('nonceTrialsStart2').value); const nonceTrialsStop2 = parseFloat(document.getElementById('nonceTrialsStop2').value); const nonceTrialsStep2 = parseFloat(document.getElementById('nonceTrialsStep2').value); + const TTL2 = parseFloat(document.getElementById('TTL2').value); for (let n = nonceTrialsStart2; n < nonceTrialsStop2; n += nonceTrialsStep2) { // eslint-disable-next-line no-await-in-loop - await runPoW({ iteration: iteration2, nonceTrials: n, numWorkers: numWorkers2, messageLength: messageLength2 }); + await runPoW({ iteration: iteration2, nonceTrials: n, numWorkers: numWorkers2, messageLength: messageLength2, ttl: TTL2 }); + } +} +async function starTTLRun() { + const iteration3 = parseFloat(document.getElementById('iteration3').value); + const nonceTrials3 = parseFloat(document.getElementById('nonceTrials3').value); + const messageLength3 = parseFloat(document.getElementById('messageLength3').value); + const numWorkers3 = parseFloat(document.getElementById('numWorkers3').value); + const TTLStart3 = parseFloat(document.getElementById('TTLStart3').value); + const TTLStop3 = parseFloat(document.getElementById('TTLStop3').value); + const TTLStep3 = parseFloat(document.getElementById('TTLStep3').value); + for (let ttl = TTLStart3; ttl < TTLStop3; ttl += TTLStep3) { + // eslint-disable-next-line no-await-in-loop + await runPoW({ iteration: iteration3, nonceTrials: nonceTrials3, numWorkers: numWorkers3, messageLength: messageLength3, ttl }); } } async function start(index) { @@ -118,6 +133,9 @@ async function start(index) { case 2: await startNonceTrialsRun(); break; + case 3: + await starTTLRun(); + break; default: break; } diff --git a/metrics.html b/metrics.html index 6dc9ec42c..e8f2c1c50 100644 --- a/metrics.html +++ b/metrics.html @@ -15,6 +15,7 @@ + @@ -25,6 +26,7 @@