Skip to content

Add complexity param #430

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 36 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all 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
65 changes: 46 additions & 19 deletions resources/developer-mode.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Suites, Tags } from "./tests.mjs";
import { params, LAYOUT_MODES } from "./shared/params.mjs";
import { Suites, Tags, handleComplexityChange } from "./tests.mjs";
import { params, LAYOUT_MODES, defaultParams } from "./shared/params.mjs";

export function createDeveloperModeContainer() {
const container = document.createElement("div");
Expand All @@ -22,6 +22,7 @@ export function createDeveloperModeContainer() {
settings.append(createUIForWarmupSuite());
settings.append(createUIForWarmupBeforeSync());
settings.append(createUIForSyncStepDelay());
settings.append(createUIForComplexity());
settings.append(createUIForAsyncSteps());
settings.append(createUIForLayoutMode());

Expand Down Expand Up @@ -66,7 +67,7 @@ function createCheckboxUI(labelValue, initialValue, paramsUpdateCallback) {
checkbox.checked = !!initialValue;
checkbox.onchange = () => {
paramsUpdateCallback(checkbox.checked);
updateURL();
handleParamsChange();
};

const label = document.createElement("label");
Expand All @@ -76,23 +77,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 @@ -105,14 +131,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);
updateURL();
params[paramKey] = map(Number(range.value));
handleParamsChange();
};

return label;
return { range, label };
}

function createUIForLayoutMode() {
Expand All @@ -125,7 +151,7 @@ function createSelectUI(labelValue, initialValue, choices, paramsUpdateCallback)
const select = document.createElement("select");
select.onchange = () => {
paramsUpdateCallback(select.value);
updateURL();
handleParamsChange();
};

choices.forEach((choice) => {
Expand Down Expand Up @@ -160,7 +186,7 @@ function createUIForSuites() {
checkbox.checked = !suite.disabled;
checkbox.onchange = () => {
suite.disabled = !checkbox.checked;
updateURL();
handleParamsChange();
};
checkboxes.push(checkbox);

Expand Down Expand Up @@ -196,7 +222,7 @@ function createSuitesGlobalSelectButtons(setSuiteEnabled) {
for (let suiteIndex = 0; suiteIndex < Suites.length; suiteIndex++)
setSuiteEnabled(suiteIndex, true);

updateURL();
handleParamsChange();
};
buttons.appendChild(button);

Expand All @@ -207,7 +233,7 @@ function createSuitesGlobalSelectButtons(setSuiteEnabled) {
for (let suiteIndex = 0; suiteIndex < Suites.length; suiteIndex++)
setSuiteEnabled(suiteIndex, false);

updateURL();
handleParamsChange();
};
buttons.appendChild(button);
return buttons;
Expand Down Expand Up @@ -243,7 +269,7 @@ function createSuitesTagsButton(setSuiteEnabled) {
continue;
setSuiteEnabled(suiteIndex, enabled);
}
updateURL();
handleParamsChange();
};
buttons.appendChild(button);
}
Expand Down Expand Up @@ -293,8 +319,9 @@ function updateParamsSuitesAndTags() {
params.suites = selectedSuites.map((suite) => suite.name);
}

function updateURL() {
function handleParamsChange() {
updateParamsSuitesAndTags();
handleComplexityChange();

const url = new URL(window.location.href);
url.search = params.toSearchParams();
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/YM7vvwiEXAPUyTM_zGLyL/_buildManifest.js" defer=""></script><script src="./_next/static/YM7vvwiEXAPUyTM_zGLyL/_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":"YM7vvwiEXAPUyTM_zGLyL","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/DD8ZEwH_JUtlG2xsVigxF/_buildManifest.js" defer=""></script><script src="./_next/static/DD8ZEwH_JUtlG2xsVigxF/_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":"DD8ZEwH_JUtlG2xsVigxF","assetPrefix":".","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

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

This file was deleted.

Large diffs are not rendered by default.

This file was deleted.

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

This file was deleted.

Large diffs are not rendered by default.

This file was deleted.

Large diffs are not rendered by default.

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-685e1f8c19060c62.js" defer=""></script><script src="./_next/static/YM7vvwiEXAPUyTM_zGLyL/_buildManifest.js" defer=""></script><script src="./_next/static/YM7vvwiEXAPUyTM_zGLyL/_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":"YM7vvwiEXAPUyTM_zGLyL","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-bbd9b4371791ee42.js" defer=""></script><script src="./_next/static/DD8ZEwH_JUtlG2xsVigxF/_buildManifest.js" defer=""></script><script src="./_next/static/DD8ZEwH_JUtlG2xsVigxF/_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":"DD8ZEwH_JUtlG2xsVigxF","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