From 57f7f1baa1ec3559cb5fe212f74b3fa276294afc Mon Sep 17 00:00:00 2001 From: Keith Miller Date: Tue, 13 Jan 2026 18:26:13 -0500 Subject: [PATCH 1/4] The Scatter Plot Should Increase with the Score Right now when the score goes up the scatter plots go down. This is a bit confusing since a higher score is better. I think it would be clearer if the plots reflected this. --- JetStreamDriver.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JetStreamDriver.js b/JetStreamDriver.js index 546d8f07..899bb551 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js @@ -1252,7 +1252,7 @@ class Benchmark { for (let i = 0; i < this.results.length; i++) { const result = this.results[i]; const cx = padding + i * xRatio; - const cy = height - padding - (result - minResult) * yRatio; + const cy = padding + (result - minResult) * yRatio; const title = `Iteration ${i + 1}: ${uiFriendlyDuration(result)}`; circlesSVG += `${title}`; } From c099e1057a6c3d94ca76d3be7a705b7a06a3e6c6 Mon Sep 17 00:00:00 2001 From: Keith Miller Date: Wed, 14 Jan 2026 08:04:11 -0500 Subject: [PATCH 2/4] actually calculate from the score rather than inverting the time --- JetStreamDriver.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/JetStreamDriver.js b/JetStreamDriver.js index 899bb551..bbc69840 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js @@ -1236,23 +1236,24 @@ class Benchmark { if (!plotContainer || !this.results || this.results.length === 0) return; + const scores = this.results.map(time => toScore(time)); const scoreElement = document.getElementById(this.scoreIdentifier("Score")); const width = scoreElement.offsetWidth; const height = scoreElement.offsetHeight; const padding = 5; - const maxResult = Math.max(...this.results); - const minResult = Math.min(...this.results); + const maxResult = Math.max(...scores); + const minResult = Math.min(...scores); - const xRatio = (width - 2 * padding) / (this.results.length - 1 || 1); + const xRatio = (width - 2 * padding) / (scores.length - 1 || 1); const yRatio = (height - 2 * padding) / (maxResult - minResult || 1); const radius = Math.max(1.5, Math.min(2.5, 10 - (this.iterations / 10))); let circlesSVG = ""; - for (let i = 0; i < this.results.length; i++) { - const result = this.results[i]; + for (let i = 0; i < scores.length; i++) { + const result = scores[i]; const cx = padding + i * xRatio; - const cy = padding + (result - minResult) * yRatio; + const cy = height - padding - (result - minResult) * yRatio; const title = `Iteration ${i + 1}: ${uiFriendlyDuration(result)}`; circlesSVG += `${title}`; } From 54523f4ca187db1f768c28b578e39ebd17e6b8f1 Mon Sep 17 00:00:00 2001 From: Keith Miller Date: Wed, 14 Jan 2026 08:05:24 -0500 Subject: [PATCH 3/4] update UI too --- JetStreamDriver.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JetStreamDriver.js b/JetStreamDriver.js index bbc69840..f316c7ba 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js @@ -1254,7 +1254,7 @@ class Benchmark { const result = scores[i]; const cx = padding + i * xRatio; const cy = height - padding - (result - minResult) * yRatio; - const title = `Iteration ${i + 1}: ${uiFriendlyDuration(result)}`; + const title = `Iteration ${i + 1}: ${uiFriendlyScore(result)}`; circlesSVG += `${title}`; } plotContainer.innerHTML = `${circlesSVG}`; From e12665fbe768442c8299995ba1f3fe12d23d46de Mon Sep 17 00:00:00 2001 From: Keith Miller Date: Wed, 14 Jan 2026 08:20:03 -0500 Subject: [PATCH 4/4] add back time to hover title --- JetStreamDriver.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JetStreamDriver.js b/JetStreamDriver.js index f316c7ba..187a9fd7 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js @@ -1254,7 +1254,7 @@ class Benchmark { const result = scores[i]; const cx = padding + i * xRatio; const cy = height - padding - (result - minResult) * yRatio; - const title = `Iteration ${i + 1}: ${uiFriendlyScore(result)}`; + const title = `Iteration ${i + 1}: ${uiFriendlyScore(result)} (${uiFriendlyDuration(this.results[i])})`; circlesSVG += `${title}`; } plotContainer.innerHTML = `${circlesSVG}`;