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:
parent
0445c499e8
commit
0748a3ed5b
@ -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 {
|
||||||
|
@ -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 |
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user