@angular/benchpress
Version:
Benchpress - a framework for e2e performance tests
24 lines • 3.42 kB
JavaScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { Statistic } from '../statistic';
export function formatNum(n) {
return n.toFixed(2);
}
export function sortedProps(obj) {
return Object.keys(obj).sort();
}
export function formatStats(validSamples, metricName) {
const samples = validSamples.map(measureValues => measureValues.values[metricName]);
const mean = Statistic.calculateMean(samples);
const cv = Statistic.calculateCoefficientOfVariation(samples, mean);
const formattedMean = formatNum(mean);
// Note: Don't use the unicode character for +- as it might cause
// hickups for consoles...
return isNaN(cv) ? formattedMean : `${formattedMean}+-${Math.floor(cv)}%`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2JlbmNocHJlc3Mvc3JjL3JlcG9ydGVyL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV2QyxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQVM7SUFDakMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQXlCO0lBQ25ELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxZQUE2QixFQUFFLFVBQWtCO0lBQzNFLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDcEYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsK0JBQStCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxpRUFBaUU7SUFDakUsMEJBQTBCO0lBQzFCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TWVhc3VyZVZhbHVlc30gZnJvbSAnLi4vbWVhc3VyZV92YWx1ZXMnO1xuaW1wb3J0IHtTdGF0aXN0aWN9IGZyb20gJy4uL3N0YXRpc3RpYyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW0objogbnVtYmVyKSB7XG4gIHJldHVybiBuLnRvRml4ZWQoMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0ZWRQcm9wcyhvYmo6IHtba2V5OiBzdHJpbmddOiBhbnl9KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLnNvcnQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFN0YXRzKHZhbGlkU2FtcGxlczogTWVhc3VyZVZhbHVlc1tdLCBtZXRyaWNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzYW1wbGVzID0gdmFsaWRTYW1wbGVzLm1hcChtZWFzdXJlVmFsdWVzID0+IG1lYXN1cmVWYWx1ZXMudmFsdWVzW21ldHJpY05hbWVdKTtcbiAgY29uc3QgbWVhbiA9IFN0YXRpc3RpYy5jYWxjdWxhdGVNZWFuKHNhbXBsZXMpO1xuICBjb25zdCBjdiA9IFN0YXRpc3RpYy5jYWxjdWxhdGVDb2VmZmljaWVudE9mVmFyaWF0aW9uKHNhbXBsZXMsIG1lYW4pO1xuICBjb25zdCBmb3JtYXR0ZWRNZWFuID0gZm9ybWF0TnVtKG1lYW4pO1xuICAvLyBOb3RlOiBEb24ndCB1c2UgdGhlIHVuaWNvZGUgY2hhcmFjdGVyIGZvciArLSBhcyBpdCBtaWdodCBjYXVzZVxuICAvLyBoaWNrdXBzIGZvciBjb25zb2xlcy4uLlxuICByZXR1cm4gaXNOYU4oY3YpID8gZm9ybWF0dGVkTWVhbiA6IGAke2Zvcm1hdHRlZE1lYW59Ky0ke01hdGguZmxvb3IoY3YpfSVgO1xufVxuIl19