1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2024-12-12 11:15:22 +02:00
pigallery2/benchmark/index.ts

92 lines
3.1 KiB
TypeScript
Raw Normal View History

2019-12-10 11:44:35 +02:00
import {Config} from '../src/common/config/private/Config';
import {ProjectPath} from '../src/backend/ProjectPath';
2020-12-30 22:13:19 +02:00
import {BenchmarkResult, BenchmarkRunner} from './BenchmarkRunner';
2019-12-10 11:44:35 +02:00
import {SearchTypes} from '../src/common/entities/AutoCompleteItem';
import {Utils} from '../src/common/Utils';
2020-12-28 23:08:57 +02:00
import {BMConfig} from './BMConfig';
2019-01-27 01:03:40 +02:00
2020-12-28 23:08:57 +02:00
Config.Server.Media.folder = BMConfig.path;
2019-01-27 01:03:40 +02:00
ProjectPath.reset();
2020-12-30 22:13:19 +02:00
const RUNS = BMConfig.RUNS;
2019-01-27 01:03:40 +02:00
let resultsText = '';
const printLine = (text: string) => {
resultsText += text + '\n';
};
2020-12-30 22:54:07 +02:00
const printHeader = async (statistic: string) => {
2019-01-27 01:03:40 +02:00
const dt = new Date();
printLine('## PiGallery2 v' + require('./../package.json').version +
2019-01-27 06:47:43 +02:00
', ' + Utils.zeroPrefix(dt.getDate(), 2) +
2019-01-27 01:03:40 +02:00
'.' + Utils.zeroPrefix(dt.getMonth() + 1, 2) +
'.' + dt.getFullYear());
2020-12-28 23:08:57 +02:00
printLine('**System**: ' + BMConfig.system);
2020-12-30 22:54:07 +02:00
printLine('\n**Gallery**: ' + statistic + '\n');
2019-01-27 01:03:40 +02:00
};
const printTableHeader = () => {
2020-12-30 22:13:19 +02:00
printLine('| Action | Sub action | Action details | Average Duration | Details |');
printLine('|:------:|:----------:|:--------------:|:----------------:|:-------:|');
2019-01-27 01:03:40 +02:00
};
2020-12-30 22:13:19 +02:00
const printResult = (result: BenchmarkResult, actionDetails: string = '', isSubResult = false) => {
console.log('benchmarked: ' + result.name);
2019-01-27 01:03:40 +02:00
let details = '-';
if (result.items) {
details = 'items: ' + result.items;
}
2020-12-30 22:13:19 +02:00
if (result.contentWrapper) {
if (result.contentWrapper.directory) {
details = 'media: ' + result.contentWrapper.directory.media.length +
', directories:' + result.contentWrapper.directory.directories.length;
} else {
details = 'media: ' + result.contentWrapper.searchResult.media.length +
', directories:' + result.contentWrapper.searchResult.directories.length;
}
}
if (isSubResult) {
printLine('| | ' + result.name + ' | ' + actionDetails +
' | ' + (result.duration).toFixed(1) + ' ms | ' + details + ' |');
} else {
2020-12-30 22:54:07 +02:00
printLine('| **' + result.name + '** | | **' + actionDetails +
'** | **' + (result.duration).toFixed(1) + ' ms** | **' + details + '** |');
2020-12-30 22:13:19 +02:00
}
if (result.subBenchmarks && result.subBenchmarks.length > 1) {
for (let i = 0; i < result.subBenchmarks.length; i++) {
printResult(result.subBenchmarks[i], '', true);
}
2019-01-27 01:03:40 +02:00
}
};
const run = async () => {
2020-12-30 22:13:19 +02:00
console.log('Running, RUNS:' + RUNS);
2019-01-27 01:28:04 +02:00
const start = Date.now();
2020-12-30 22:13:19 +02:00
const bm = new BenchmarkRunner(RUNS);
2019-01-27 01:03:40 +02:00
// header
2020-12-30 22:54:07 +02:00
await printHeader(await bm.getStatistic());
2019-01-27 01:03:40 +02:00
printTableHeader();
2020-12-30 22:13:19 +02:00
printResult(await bm.bmScanDirectory());
printResult(await bm.bmSaveDirectory());
printResult(await bm.bmListDirectory());
printResult(await bm.bmListPersons());
2019-01-27 01:03:40 +02:00
(await bm.bmAllSearch('a')).forEach(res => {
if (res.searchType !== null) {
2020-12-30 22:13:19 +02:00
printResult(res.result, '`a` as `' + SearchTypes[res.searchType] + '`');
2019-01-27 01:03:40 +02:00
} else {
2020-12-30 22:13:19 +02:00
printResult(res.result, '`a` as `any`');
2019-01-27 01:03:40 +02:00
}
});
2020-12-30 22:13:19 +02:00
printResult(await bm.bmInstantSearch('a'), '`a`');
printResult(await bm.bmAutocomplete('a'), '`a`');
printLine('*Measurements run ' + RUNS + ' times and an average was calculated.');
2019-01-27 01:03:40 +02:00
console.log(resultsText);
2019-01-27 01:28:04 +02:00
console.log('run for : ' + ((Date.now() - start)).toFixed(1) + 'ms');
2019-01-27 01:03:40 +02:00
};
2020-12-30 22:13:19 +02:00
run().then(console.log).catch(console.error);
2019-01-27 01:03:40 +02:00