Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
1cf416e
adding complexity param
camillobruni Oct 9, 2024
0c93e72
formatting
camillobruni Oct 9, 2024
e8aed33
use defaultNumberOfItemsToAdd
camillobruni Oct 9, 2024
c23bafc
revert non-essential changes
camillobruni Oct 9, 2024
b492131
chagne default count from steps names
camillobruni Oct 11, 2024
2204f9c
show diverging non-default params table
camillobruni Oct 11, 2024
d55137b
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Oct 11, 2024
bfb09a0
update
camillobruni Oct 11, 2024
1566f85
Merge remote-tracking branch 'webkit/main' into 2024-10-09_complexity…
camillobruni Oct 23, 2024
9ac9bf7
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Dec 10, 2024
4b78b68
cleanup
camillobruni Dec 10, 2024
bc8d4f8
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Jan 6, 2025
fe73c4e
cleanup and fix
camillobruni Jan 6, 2025
8cc92b3
fix
camillobruni Jan 6, 2025
0dcf6d9
use numberOfItemsToAdd var
camillobruni Jan 7, 2025
62ed2bc
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Jan 9, 2025
ea7d49e
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Jan 9, 2025
9973649
update news-next
camillobruni Jan 9, 2025
3cbaffb
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni May 21, 2025
92cce79
revert
camillobruni May 21, 2025
6cb8172
fix
camillobruni May 21, 2025
40741c6
fix dev-ui
camillobruni May 21, 2025
b13261b
fix
camillobruni May 21, 2025
f06cf5f
cleanup
camillobruni May 21, 2025
dc89582
rebuild news-next
camillobruni May 21, 2025
1c441cf
adding new files
camillobruni May 21, 2025
56be61a
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni May 27, 2025
51b63df
address comments
camillobruni May 27, 2025
58dd229
formatting
camillobruni May 27, 2025
047ec14
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Jun 3, 2025
52d1154
address comment
camillobruni Jun 3, 2025
ff63e88
Merge branch 'main' of github.com:camillobruni/Speedometer into 2024-…
camillobruni Jul 1, 2025
0f9314a
update
camillobruni Jul 1, 2025
429554f
updating
camillobruni Jul 1, 2025
824b21a
update
camillobruni Jul 1, 2025
57b131b
fix unused param
camillobruni Jul 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@ <h1>Score</h1>
<div class="section-grid">
<h1 class="section-header">Detailed Results</h1>
<div class="section-content all-metric-results">
<div class="non-standard-params">
<h2>Non-standard Parameters</h2>
<p>
Speedometer ran with non-standard parameters.<br />
The results are likely not comparable to default runs.
</p>
<table id="non-standard-params-table"></table>
</div>
<div class="aggregated-metric-result">
<h2>Aggregate Metric</h2>
<div id="geomean-chart"></div>
Expand Down
46 changes: 36 additions & 10 deletions resources/developer-mode.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export function createDeveloperModeContainer() {
settings.append(createUIForWarmupSuite());
settings.append(createUIForWarmupBeforeSync());
settings.append(createUIForSyncStepDelay());
settings.append(createUIForComplexity());

content.append(document.createElement("hr"));
content.append(settings);
Expand Down Expand Up @@ -61,23 +62,48 @@ function createCheckboxUI(labelValue, initialValue, paramsUpdateCallback) {
}

function createUIForIterationCount() {
return createTimeRangeUI("Iterations: ", "iterationCount", "#", 1, 200);
return createLinearRangeUI("Iterations: ", "iterationCount", "#", 1, 200);
}

function createUIForWarmupBeforeSync() {
return createTimeRangeUI("Warmup time: ", "warmupBeforeSync");
return createLinearRangeUI("Warmup time: ", "warmupBeforeSync");
}

function createUIForSyncStepDelay() {
return createTimeRangeUI("Sync step delay: ", "waitBeforeSync");
return createLinearRangeUI("Sync step delay: ", "waitBeforeSync");
}

function createTimeRangeUI(labelText, paramKey, unit = "ms", min = 0, max = 1000) {
const range = document.createElement("input");
range.type = "range";
function createUIForComplexity() {
return createExpRangeUI("Relative complexity: ", "complexity", "x", 0.01, 100, 0.01);
}

function createLinearRangeUI(labelText, paramKey, unit = "ms", min = 0, max = 1000, step = 1) {
const linearMap = (value) => value;
const { range, label } = createTimeRangeUI(labelText, paramKey, unit, linearMap, 0);
range.min = min;
range.max = max;
range.step = step;
range.value = params[paramKey];
return label;
}

function createExpRangeUI(labelText, paramKey, unit = "ms", min = 0, max = 1000, step = 1) {
const defaultValue = defaultParams[paramKey];
const initialValue = params[paramKey];
const b = defaultValue - 1;
const a = -Math.log(min - b);
const logMap = (value) => Math.round((Math.exp(value * a) + b) / step) * step;
const { range, label } = createTimeRangeUI(labelText, paramKey, unit, logMap, 2);
range.min = -1;
range.max = Math.log(max - b) / a;
range.step = 0.01;
range.value = Math.log(initialValue - b) / a;
return label;
}

function createTimeRangeUI(labelText, paramKey, unit = "ms", map, decimals) {
const range = document.createElement("input");
range.type = "range";

const rangeValueAndUnit = document.createElement("span");
rangeValueAndUnit.className = "range-label-data";
Expand All @@ -90,14 +116,14 @@ function createTimeRangeUI(labelText, paramKey, unit = "ms", min = 0, max = 1000
label.append(span(labelText), range, rangeValueAndUnit);

range.oninput = () => {
rangeValue.textContent = range.value;
rangeValue.textContent = map(Number(range.value)).toFixed(decimals);
};
range.onchange = () => {
params[paramKey] = parseInt(range.value);
params[paramKey] = map(Number(range.value));
updateURL();
};

return label;
return { range, label };
}

function createUIForSuites() {
Expand Down Expand Up @@ -255,7 +281,7 @@ function updateURL() {
}
}

const defaultParamKeys = ["iterationCount", "useWarmupSuite", "warmupBeforeSync", "waitBeforeSync"];
const defaultParamKeys = ["iterationCount", "useWarmupSuite", "warmupBeforeSync", "waitBeforeSync", "complexity"];
for (const paramKey of defaultParamKeys) {
if (params[paramKey] !== defaultParams[paramKey])
url.searchParams.set(paramKey, params[paramKey]);
Expand Down
38 changes: 34 additions & 4 deletions resources/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,40 @@ section#instructions .section-content > * {
flex-direction: column;
}

section#details h1 {
margin-bottom: 10px;
}

section#details .non-standard-params {
display: none;
text-align: center;
margin-bottom: 2em;
}

section#details .non-standard-params h2 {
color: var(--highlight);
}

#non-standard-params-table {
border-collapse: collapse;
text-align: left;
display: inline-block;
}
#non-standard-params-table tr {
padding: 2px;
}

#non-standard-params-table thead th {
border-bottom: 1px solid var(--foreground);
padding: 0.1em 0.2em;
}

#non-standard-params-table tbody th {
font-weight: normal;
text-align: left;
padding: 0.1em 0.2em;
}

section#details .all-metric-results {
flex: auto;
overflow-y: auto;
Expand All @@ -513,10 +547,6 @@ section#details .arithmetic-mean > label {
margin-right: 10px;
}

section#details h1 {
margin-bottom: 10px;
}

section#details .metric {
margin: 0px 0 10px 0;
display: inline-block;
Expand Down
31 changes: 30 additions & 1 deletion resources/main.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { BenchmarkRunner } from "./benchmark-runner.mjs";
import * as Statistics from "./statistics.mjs";
import { Suites } from "./tests.mjs";
import { renderMetricView } from "./metric-ui.mjs";
import { params } from "./shared/params.mjs";
import { defaultParams, params } from "./shared/params.mjs";
import { createDeveloperModeContainer } from "./developer-mode.mjs";

// FIXME(camillobruni): Add base class
Expand Down Expand Up @@ -243,6 +243,7 @@ class MainBenchmarkClient {
}

_populateDetailedResults(metrics) {
this._populateNonStandardParams();
const trackHeight = 24;
document.documentElement.style.setProperty("--metrics-line-height", `${trackHeight}px`);
const plotWidth = (params.viewport.width - 120) / 2;
Expand Down Expand Up @@ -290,6 +291,34 @@ class MainBenchmarkClient {
csvLink.setAttribute("download", `${filePrefix}.csv`);
}

_populateNonStandardParams() {
if (params === defaultParams)
return;
const paramsDiff = [];
const usedSearchparams = params.toSearchParamsObject();
const defaultSearchParams = defaultParams.toCompleteSearchParamsObject(false);
for (const [key, value] of usedSearchparams.entries()) {
const defaultValue = defaultSearchParams.get(key);
if (value !== defaultValue)
paramsDiff.push({ key, value, defaultValue });
}
if (paramsDiff.length === 0)
return;
let body = "";
for (const { key, value, defaultValue } of paramsDiff)
body += `<tr><th>${key}</th><th>${value}</th><th>${defaultValue}</th></tr>`;
const table = document.getElementById("non-standard-params-table");
table.innerHTML = `<thead>
<tr>
<th>Param</th>
<th>Value</th>
<th>Default</th>
</tr>
</thead>
<tbody>${body}</tbody>`;
document.querySelector(".non-standard-params").style.display = "block";
}

prepareUI() {
window.addEventListener("hashchange", this._hashChangeHandler.bind(this));
window.addEventListener("resize", this._resizeScreeHandler.bind(this));
Expand Down
2 changes: 1 addition & 1 deletion resources/newssite/news-next/dist/404.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-77983e68be50f72a.js" defer=""></script><script src="./_next/static/chunks/pages/_error-54de1933a164a1ff.js" defer=""></script><script src="./_next/static/tdun_naEsLSWD7CGin1GQ/_buildManifest.js" defer=""></script><script src="./_next/static/tdun_naEsLSWD7CGin1GQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"tdun_naEsLSWD7CGin1GQ","assetPrefix":".","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-4fe6038a10d156ec.js" defer=""></script><script src="./_next/static/chunks/pages/_error-54de1933a164a1ff.js" defer=""></script><script src="./_next/static/3gZGkbShGQnNLB0qAzRia/_buildManifest.js" defer=""></script><script src="./_next/static/3gZGkbShGQnNLB0qAzRia/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"3gZGkbShGQnNLB0qAzRia","assetPrefix":".","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion resources/newssite/news-next/dist/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><link rel="preload" href="./_next/static/css/2cf5163b53bb0adb.css" as="style"/><link rel="stylesheet" href="./_next/static/css/2cf5163b53bb0adb.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-77983e68be50f72a.js" defer=""></script><script src="./_next/static/chunks/743-fd706aeabb7828e3.js" defer=""></script><script src="./_next/static/chunks/pages/index-ca407dccff56c060.js" defer=""></script><script src="./_next/static/tdun_naEsLSWD7CGin1GQ/_buildManifest.js" defer=""></script><script src="./_next/static/tdun_naEsLSWD7CGin1GQ/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"tdun_naEsLSWD7CGin1GQ","assetPrefix":".","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="./_next/static/css/a0dca1379a01e5cf.css" as="style"/><link rel="stylesheet" href="./_next/static/css/a0dca1379a01e5cf.css" data-n-g=""/><link rel="preload" href="./_next/static/css/69253d842fd3fbfd.css" as="style"/><link rel="stylesheet" href="./_next/static/css/69253d842fd3fbfd.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="./_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="./_next/static/chunks/webpack-e50e9853db18b759.js" defer=""></script><script src="./_next/static/chunks/framework-2c79e2a64abdb08b.js" defer=""></script><script src="./_next/static/chunks/main-2ba37e62325cc71b.js" defer=""></script><script src="./_next/static/chunks/pages/_app-4fe6038a10d156ec.js" defer=""></script><script src="./_next/static/chunks/553-29fd8c03a09c7b37.js" defer=""></script><script src="./_next/static/chunks/pages/index-7052462c4e106c39.js" defer=""></script><script src="./_next/static/3gZGkbShGQnNLB0qAzRia/_buildManifest.js" defer=""></script><script src="./_next/static/3gZGkbShGQnNLB0qAzRia/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><div id="settings-container"></div><div id="notifications-container"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/","query":{},"buildId":"3gZGkbShGQnNLB0qAzRia","assetPrefix":".","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
61 changes: 11 additions & 50 deletions resources/newssite/news-next/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading