Skip to content

Commit

Permalink
chore: clearer timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
privatenumber committed Apr 8, 2024
1 parent 9bc82c0 commit f171502
Show file tree
Hide file tree
Showing 10 changed files with 307 additions and 253 deletions.
214 changes: 107 additions & 107 deletions README.md

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions packages/bench/benchmark-all/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import assert from 'assert';
import { cli } from 'cleye';
import { getArtifacts, loadArtifact } from '@minification-benchmarks/artifacts';
import { getMinifiers } from '@minification-benchmarks/minifiers';
import { saveData } from '@minification-benchmarks/data';
import { benchmarkArtifacts } from './benchmark-artifacts';
import type { MinifierInstance } from './types.js';

Expand Down Expand Up @@ -29,6 +30,11 @@ const argv = cli({
alias: 'f',
description: 'Re-run minifiers and overwrite existing results',
},
sort: {
type: Boolean,
alias: 's',
description: 'Re-sort data',
},
},
});

Expand Down Expand Up @@ -85,6 +91,7 @@ const loadMinifiers = async (
minifier: filterMinifier,
runs,
force,
sort,
} = argv.flags;

const artifacts = await loadArtifacts(filterArtifacts);
Expand All @@ -97,5 +104,9 @@ const loadMinifiers = async (
force,
);

if (sort) {
await saveData(true);
}

process.exit();
})();
95 changes: 50 additions & 45 deletions packages/data/data.json → packages/data/data/data.json
Original file line number Diff line number Diff line change
Expand Up @@ -1226,15 +1226,6 @@
}
}
},
"google-closure-compiler": {
"minifierPath": "google-closure-compiler.ts",
"version": "20230802.0.0",
"result": {
"error": {
"message": "Timed out"
}
}
},
"tedivm/jshrink": {
"minifierPath": "jshrink/index.ts",
"version": "1.7.0",
Expand All @@ -1245,6 +1236,15 @@
"stage": "post-validation"
}
}
},
"google-closure-compiler": {
"minifierPath": "google-closure-compiler.ts",
"version": "20230802.0.0",
"result": {
"error": {
"message": "Timed out"
}
}
}
}
},
Expand Down Expand Up @@ -1356,6 +1356,15 @@
}
}
},
"uglify-js": {
"minifierPath": "uglify-js.ts",
"version": "3.17.4",
"result": {
"error": {
"message": "Timed out"
}
}
},
"tedivm/jshrink": {
"minifierPath": "jshrink/index.ts",
"version": "1.7.0",
Expand All @@ -1366,15 +1375,6 @@
"stage": "minification"
}
}
},
"uglify-js": {
"minifierPath": "uglify-js.ts",
"version": "3.17.4",
"result": {
"error": {
"message": "Timed out"
}
}
}
}
},
Expand Down Expand Up @@ -1519,7 +1519,19 @@
"data": {
"minifiedSize": 3309542,
"minzippedSize": 852335,
"time": 3035.1667141999997,
"time": 1406.9240752,
"runs": 5
}
}
},
"terser": {
"minifierPath": "terser.ts",
"version": "5.30.3",
"result": {
"data": {
"minifiedSize": 3349343,
"minzippedSize": 854273,
"time": 6859.1557166,
"runs": 5
}
}
Expand All @@ -1531,7 +1543,7 @@
"data": {
"minifiedSize": 3538024,
"minzippedSize": 876535,
"time": 3665.8923047999997,
"time": 2099.1048500000006,
"runs": 5
}
}
Expand All @@ -1543,7 +1555,7 @@
"data": {
"minifiedSize": 3364009,
"minzippedSize": 876924,
"time": 166.03341700000001,
"time": 174.5559002,
"runs": 5
}
}
Expand All @@ -1555,7 +1567,7 @@
"data": {
"minifiedSize": 3530223,
"minzippedSize": 879301,
"time": 4854.449586,
"time": 3250.0969665999996,
"runs": 5
}
}
Expand All @@ -1567,7 +1579,7 @@
"data": {
"minifiedSize": 3489518,
"minzippedSize": 915495,
"time": 470.6170414,
"time": 322.5272582,
"runs": 5
}
}
Expand All @@ -1581,17 +1593,6 @@
}
}
},
"bun": {
"minifierPath": "bun.ts",
"version": "1.1.2",
"result": {
"error": {
"message": "Expected values to be strictly equal:\n+ actual - expected\n\n+ 'var x = function () { return \"string\"; };\\r\\n'\n- 'var x = function () { return \"string\"; };\\n'",
"stack": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:\n+ actual - expected\n\n+ 'var x = function () { return \"string\"; };\\r\\n'\n- 'var x = function () { return \"string\"; };\\n'\n at Object.run (/packages/artifacts/artifacts/typescript/test.ts:13:10)\n at Artifact.validate (/packages/artifacts/utils/artifact.ts:101:9)\n at <anonymous> (/packages/bench/benchmark/cli.ts:98:2)",
"stage": "post-validation"
}
}
},
"google-closure-compiler": {
"minifierPath": "google-closure-compiler.ts",
"version": "20230802.0.0",
Expand All @@ -1601,30 +1602,34 @@
}
}
},
"tedivm/jshrink": {
"minifierPath": "jshrink/index.ts",
"version": "1.7.0",
"uglify-js": {
"minifierPath": "uglify-js.ts",
"version": "3.17.4",
"result": {
"error": {
"message": "Timed out"
}
}
},
"terser": {
"minifierPath": "terser.ts",
"version": "5.30.3",
"tedivm/jshrink": {
"minifierPath": "jshrink/index.ts",
"version": "1.7.0",
"result": {
"error": {
"message": "Timed out"
"message": "RuntimeException: Unclosed regex pattern at position: 8365076 in /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php:643",
"stack": "Stack trace:\n#0 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(302): JShrink\\Minifier->saveRegex()\n#1 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(164): JShrink\\Minifier->loop()\n#2 /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php(139): JShrink\\Minifier->minifyToString('/* ************...', Array)\n#3 /packages/minifiers/minifiers/jshrink/jshrink.php(8): JShrink\\Minifier::minify('/* ************...')\n#4 {main}",
"stage": "minification"
}
}
},
"uglify-js": {
"minifierPath": "uglify-js.ts",
"version": "3.17.4",
"bun": {
"minifierPath": "bun.ts",
"version": "1.1.2",
"result": {
"error": {
"message": "Timed out"
"message": "Expected values to be strictly equal:\n+ actual - expected\n\n+ 'var x = function () { return \"string\"; };\\r\\n'\n- 'var x = function () { return \"string\"; };\\n'",
"stack": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:\n+ actual - expected\n\n+ 'var x = function () { return \"string\"; };\\r\\n'\n- 'var x = function () { return \"string\"; };\\n'\n at Object.run (/packages/artifacts/artifacts/typescript/test.ts:13:10)\n at Artifact.validate (/packages/artifacts/utils/artifact.ts:101:9)\n at <anonymous> (/packages/bench/benchmark/cli.ts:98:2)",
"stage": "post-validation"
}
}
}
Expand Down
99 changes: 99 additions & 0 deletions packages/data/data/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
import fs from 'fs/promises';
import { readJsonFile } from '@minification-benchmarks/utils/read-json-file.js';
import { sortObjectKeys } from '@minification-benchmarks/utils/sort-object-keys.js';
import type { ArtifactLoaded } from '@minification-benchmarks/artifacts';
import type { MinifierLoaded } from '@minification-benchmarks/minifiers';
import type { BenchmarkResultWithRuns } from '@minification-benchmarks/bench/types.js';
import type { Data, Artifact } from '../types.js';
import { sortArtifacts, sortMinifiers } from './sort.js';

const dataPath = new URL('data.json', import.meta.url).pathname;

export const data = await readJsonFile(dataPath) as Data;

export const saveData = async (
minifiersSort = false,
) => {
const sortedData = sortObjectKeys(data, sortArtifacts);

if (minifiersSort) {
for (const artifact of Object.values(sortedData)) {
artifact.minified = sortObjectKeys(artifact.minified, sortMinifiers);
}
}

await fs.writeFile(dataPath, JSON.stringify(sortedData, null, '\t'));
};

const getArtifact = (
artifact: ArtifactLoaded,
): Artifact | false => {
const foundArtifact = data[artifact.name];
const hasArtifact = (
foundArtifact?.version === artifact.packageJson.version
&& foundArtifact?.filePath === artifact.filePath
);

return hasArtifact && foundArtifact;
};

const getMinifierName = (
minifier: MinifierLoaded,
minifierInstance: string,
) => minifier.name + (minifierInstance === 'default' ? '' : ` (${minifierInstance})`);

const getMinifier = (
artifact: Artifact,
minifier: MinifierLoaded,
minifierInstance: string,
) => {
const minifierName = getMinifierName(minifier, minifierInstance);
const foundMinifier = artifact.minified[minifierName];
return (
foundMinifier?.version === minifier.meta.version
&& foundMinifier
);
};

export const hasResults = (
artifact: ArtifactLoaded,
minifier: MinifierLoaded,
minifierInstance: string,
) => {
const foundArtifact = getArtifact(artifact);
if (!foundArtifact) {
return false;
}

return Boolean(getMinifier(foundArtifact, minifier, minifierInstance));
};

export const saveResults = async (
artifact: ArtifactLoaded,
minifier: MinifierLoaded,
minifierInstance: string,
result: BenchmarkResultWithRuns,
) => {
let foundArtifact = getArtifact(artifact);

if (!foundArtifact) {
foundArtifact = {
version: artifact.packageJson.version,
filePath: artifact.filePath,
size: artifact.size,
gzipSize: artifact.gzipSize,
minified: {},
};
data[artifact.name] = foundArtifact;
}

const minifierName = getMinifierName(minifier, minifierInstance);
foundArtifact.minified[minifierName] = {
minifierPath: minifier.minifierPath!,
version: minifier.meta.version,
result,
};
foundArtifact.minified = sortObjectKeys(foundArtifact.minified, sortMinifiers);

await saveData();
};
24 changes: 24 additions & 0 deletions packages/data/data/sort.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import type { Artifact, Minifier } from '../types.js';

export const sortArtifacts = (
[, a]: [unknown, Artifact],
[, b]: [unknown, Artifact],
) => a.size - b.size;

export const sortMinifiers = (
[, a]: [unknown, Minifier],
[, b]: [unknown, Minifier],
) => {
if (
'error' in a.result
&& 'error' in b.result
) {
if (a.result.error.message === b.result.error.message) {
return 0;
}
return a.result.error.message < b.result.error.message ? 1 : -1;
}
if ('error' in a.result) { return 1; }
if ('error' in b.result) { return -1; }
return a.result.data.minzippedSize - b.result.data.minzippedSize;
};
Loading

0 comments on commit f171502

Please sign in to comment.