nope/modules/funcs/generateBenchmarkFunction.ts
2020-08-30 09:45:44 +02:00

49 lines
1.4 KiB
TypeScript

/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-08-25 16:18:36
* @modify date 2020-08-26 00:08:31
* @desc [description]
*/
import { Logger } from 'winston';
import { exportFunctionToDispatcher } from '../../lib/dispatcher/nopeDispatcherDecorators';
import { SystemLogger } from "../mod-Logger/src/Unique.Logger";
export function now() {
const _hr = process.hrtime();
return _hr[0] * 1000 + _hr[1] / 1000 / 1000;
}
/**
* Function to Generate a Benchmark-Function
* @param displayQpsAfter
* @param textToDisplay
*/
export const generateBenchmarkFunction = exportFunctionToDispatcher((displayQpsAfter: number, textToDisplay: string, logger?: Logger): () => void => {
let _counter = 0;
let _startTime = now();
const max = displayQpsAfter;
const _logger = logger !== undefined ? logger : SystemLogger.logger.getLogger('algorithmen.benchmark')
return () => {
if (_counter === 1) {
_startTime = now();
} else if (_counter === max) {
const _endTime = now();
const _timeDifference = _endTime - _startTime;
const _qps = max / (_timeDifference / 1000);
/** Log the Result */
_logger.info(textToDisplay + ' QPS: ' + (Math.round(_qps * 100) / 100).toString() + ' [R/Sec]');
/** Reset the Value */
_counter = 0;
}
_counter++;
};
}, {
uri: 'generateBenchmarkFunction'
});