2020-01-18 09:14:30 -05:00
|
|
|
const minifiers = require('./minifiers');
|
|
|
|
const tests = require('./tests');
|
2020-01-25 22:38:14 -05:00
|
|
|
const {join} = require('path');
|
2021-08-07 06:53:28 -04:00
|
|
|
const {mkdirSync, readFileSync, writeFileSync} = require('fs');
|
2020-01-18 09:14:30 -05:00
|
|
|
|
|
|
|
const RESULTS_DIR = join(__dirname, 'results');
|
|
|
|
const SPEEDS_JSON = join(RESULTS_DIR, 'speeds.json');
|
|
|
|
const SPEEDS_GRAPH = join(RESULTS_DIR, 'speeds.png');
|
2021-08-07 09:58:38 -04:00
|
|
|
const AVERAGE_COMBINED_GRAPH = join(RESULTS_DIR, 'average-combined.png');
|
2020-01-18 09:14:30 -05:00
|
|
|
const AVERAGE_SPEEDS_GRAPH = join(RESULTS_DIR, 'average-speeds.png');
|
|
|
|
const SIZES_JSON = join(RESULTS_DIR, 'sizes.json');
|
|
|
|
const SIZES_GRAPH = join(RESULTS_DIR, 'sizes.png');
|
|
|
|
const AVERAGE_SIZES_GRAPH = join(RESULTS_DIR, 'average-sizes.png');
|
|
|
|
|
|
|
|
const minifierNames = Object.keys(minifiers);
|
|
|
|
const testNames = tests.map(t => t.name);
|
|
|
|
|
2021-08-07 06:53:28 -04:00
|
|
|
mkdirSync(RESULTS_DIR, {recursive: true});
|
2020-01-25 22:38:14 -05:00
|
|
|
|
2020-01-18 09:14:30 -05:00
|
|
|
module.exports = {
|
|
|
|
writeSpeedResults(speeds) {
|
|
|
|
writeFileSync(SPEEDS_JSON, JSON.stringify(speeds, null, 2));
|
|
|
|
},
|
|
|
|
writeSizeResults(sizes) {
|
|
|
|
writeFileSync(SIZES_JSON, JSON.stringify(sizes, null, 2));
|
|
|
|
},
|
2021-08-07 09:58:38 -04:00
|
|
|
writeAverageCombinedGraph(data) {
|
|
|
|
writeFileSync(AVERAGE_COMBINED_GRAPH, data);
|
|
|
|
},
|
2020-01-18 09:14:30 -05:00
|
|
|
writeAverageSpeedsGraph(data) {
|
|
|
|
writeFileSync(AVERAGE_SPEEDS_GRAPH, data);
|
|
|
|
},
|
|
|
|
writeSpeedsGraph(data) {
|
|
|
|
writeFileSync(SPEEDS_GRAPH, data);
|
|
|
|
},
|
|
|
|
writeAverageSizesGraph(data) {
|
|
|
|
writeFileSync(AVERAGE_SIZES_GRAPH, data);
|
|
|
|
},
|
|
|
|
writeSizesGraph(data) {
|
|
|
|
writeFileSync(SIZES_GRAPH, data);
|
|
|
|
},
|
|
|
|
getSpeedResults() {
|
|
|
|
const data = JSON.parse(readFileSync(SPEEDS_JSON, 'utf8'));
|
|
|
|
|
|
|
|
return {
|
2021-08-07 09:58:38 -04:00
|
|
|
// Get minifier-speed pairs.
|
2020-01-18 09:14:30 -05:00
|
|
|
getAverageRelativeSpeedPerMinifier(baselineMinifier) {
|
2021-08-07 09:58:38 -04:00
|
|
|
return new Map(minifierNames.map(minifier => [
|
2020-01-18 09:14:30 -05:00
|
|
|
minifier,
|
|
|
|
testNames
|
2020-01-24 09:08:00 -05:00
|
|
|
// Get operations per second for each test.
|
2020-01-18 09:14:30 -05:00
|
|
|
.map(test => data[test][minifier] / data[test][baselineMinifier])
|
2020-01-24 09:08:00 -05:00
|
|
|
// Sum all test operations per second.
|
2020-01-18 09:14:30 -05:00
|
|
|
.reduce((sum, c) => sum + c)
|
2020-01-24 09:08:00 -05:00
|
|
|
// Divide by tests count to get average operations per second.
|
2020-01-18 09:14:30 -05:00
|
|
|
/ testNames.length,
|
2021-08-07 09:58:38 -04:00
|
|
|
]));
|
2020-01-18 09:14:30 -05:00
|
|
|
},
|
|
|
|
// Get minifier-speeds pairs.
|
|
|
|
getRelativeFileSpeedsPerMinifier(baselineMinifier) {
|
|
|
|
return minifierNames.map(minifier => [
|
|
|
|
minifier,
|
|
|
|
testNames.map(test => [test, data[test][minifier] / data[test][baselineMinifier]]),
|
|
|
|
]);
|
|
|
|
},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
getSizeResults() {
|
|
|
|
const data = JSON.parse(readFileSync(SIZES_JSON, 'utf8'));
|
|
|
|
|
|
|
|
return {
|
2021-08-07 09:58:38 -04:00
|
|
|
// Get minifier-size pairs.
|
2020-01-18 09:14:30 -05:00
|
|
|
getAverageRelativeSizePerMinifier() {
|
2021-08-07 09:58:38 -04:00
|
|
|
return new Map(minifierNames.map(minifier => [
|
2020-01-18 09:14:30 -05:00
|
|
|
minifier,
|
|
|
|
testNames
|
|
|
|
.map(test => data[test][minifier].relative)
|
|
|
|
.reduce((sum, c) => sum + c)
|
|
|
|
/ testNames.length,
|
2021-08-07 09:58:38 -04:00
|
|
|
]));
|
2020-01-18 09:14:30 -05:00
|
|
|
},
|
|
|
|
// Get minifier-sizes pairs.
|
|
|
|
getRelativeFileSizesPerMinifier() {
|
|
|
|
return minifierNames.map(minifier => [
|
|
|
|
minifier,
|
|
|
|
testNames.map(test => [test, data[test][minifier].relative]),
|
|
|
|
]);
|
|
|
|
},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
};
|