1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00

adding performance benchmark

This commit is contained in:
Patrik J. Braun 2019-01-26 18:28:04 -05:00
parent 0445c499e8
commit 0748a3ed5b
3 changed files with 31 additions and 7 deletions

View File

@ -84,18 +84,18 @@ export class Benchmarks {
const startSkip = process.hrtime(); const startSkip = process.hrtime();
await beforeEach(); await beforeEach();
const endSkip = process.hrtime(startSkip); const endSkip = process.hrtime(startSkip);
skip += (endSkip[0] * 1000 + endSkip[1] / 1000); skip += (endSkip[0] * 1000 + endSkip[1] / 1000000);
} }
await fn(); await fn();
if (afterEach) { if (afterEach) {
const startSkip = process.hrtime(); const startSkip = process.hrtime();
await afterEach(); await afterEach();
const endSkip = process.hrtime(startSkip); const endSkip = process.hrtime(startSkip);
skip += (endSkip[0] * 1000 + endSkip[1] / 1000); skip += (endSkip[0] * 1000 + endSkip[1] / 1000000);
} }
} }
const end = process.hrtime(start); const end = process.hrtime(start);
const duration = (end[0] * 1000 + end[1] / 1000) / this.RUNS; const duration = (end[0] * 1000 + end[1] / 1000000) / this.RUNS;
if (!scanned) { if (!scanned) {
return { return {

View File

@ -2,4 +2,21 @@
These results are created mostly for development, but I'm making them public for curious users. These results are created mostly for development, but I'm making them public for curious users.
## PiGallery2 v1.5.8, 06.01.2019
**System**: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, 16GB Ram, SHDD: 1TB, 5400 rpm
**Gallery**: directories: 0 media: 341, faces: 39
| action | action details | average time | details |
|:------:|:--------------:|:------------:|:-------:|
| Scanning directory | | 2486.5ms | media: 341, directories:0 |
| Saving directory | | 780.0ms | - |
| Listing Directory | | 31.5ms | media: 341, directories:0 |
| searching | `a` as `directory` | 2.9ms | - |
| searching | `a` as `person` | 7.3ms | media: 39, directories:0 |
| searching | `a` as `keyword` | 30.8ms | media: 339, directories:0 |
| searching | `a` as `position` | 25.7ms | media: 282, directories:0 |
| searching | `a` as `photo` | 2.8ms | - |
| searching | `a` as `video` | 2.6ms | - |
| searching | `a` as `any` | 33.0ms | media: 339, directories:0 |
| instant search | `a` | 6.1ms | media: 10, directories:0 |
| auto complete | `a` | 5.4ms | items: 10 |

View File

@ -10,7 +10,7 @@ const config: { path: string, system: string } = require(path.join(__dirname, 'c
Config.Server.imagesFolder = config.path; Config.Server.imagesFolder = config.path;
const dbPath = path.join(__dirname, 'test.db'); const dbPath = path.join(__dirname, 'test.db');
ProjectPath.reset(); ProjectPath.reset();
const RUNS = 1; const RUNS = 50;
let resultsText = ''; let resultsText = '';
const printLine = (text: string) => { const printLine = (text: string) => {
@ -25,7 +25,11 @@ const printHeader = async () => {
'.' + dt.getFullYear()); '.' + dt.getFullYear());
printLine('**System**: ' + config.system); printLine('**System**: ' + config.system);
const dir = await DiskMangerWorker.scanDirectory('./'); const dir = await DiskMangerWorker.scanDirectory('./');
printLine('**Gallery**: directories:' + dir.directories.length + ' media:' + dir.media.length); printLine('**Gallery**: directories: ' +
dir.directories.length +
' media: ' + dir.media.length +
// @ts-ignore
', faces: ' + dir.media.reduce((p, c) => p + (c.metadata.faces || []).length, 0));
}; };
@ -34,6 +38,7 @@ const printTableHeader = () => {
printLine('|:------:|:--------------:|:------------:|:-------:|'); printLine('|:------:|:--------------:|:------------:|:-------:|');
}; };
const printResult = (result: BenchmarkResult, action: string, actionDetails: string = '') => { const printResult = (result: BenchmarkResult, action: string, actionDetails: string = '') => {
console.log('benchmarked: ' + action);
let details = '-'; let details = '-';
if (result.items) { if (result.items) {
details = 'items: ' + result.items; details = 'items: ' + result.items;
@ -42,10 +47,11 @@ const printResult = (result: BenchmarkResult, action: string, actionDetails: str
details = 'media: ' + result.media + ', directories:' + result.directories; details = 'media: ' + result.media + ', directories:' + result.directories;
} }
printLine('| ' + action + ' | ' + actionDetails + printLine('| ' + action + ' | ' + actionDetails +
' | ' + (result.duration / 1000).toFixed(2) + 's | ' + details + ' |'); ' | ' + (result.duration).toFixed(1) + 'ms | ' + details + ' |');
}; };
const run = async () => { const run = async () => {
const start = Date.now();
const bm = new Benchmarks(RUNS, dbPath); const bm = new Benchmarks(RUNS, dbPath);
// header // header
@ -64,6 +70,7 @@ const run = async () => {
printResult(await bm.bmInstantSearch('a'), 'instant search', '`a`'); printResult(await bm.bmInstantSearch('a'), 'instant search', '`a`');
printResult(await bm.bmAutocomplete('a'), 'auto complete', '`a`'); printResult(await bm.bmAutocomplete('a'), 'auto complete', '`a`');
console.log(resultsText); console.log(resultsText);
console.log('run for : ' + ((Date.now() - start)).toFixed(1) + 'ms');
}; };
run(); run();