UNPKG

@angular/benchpress

Version:

Benchpress - a framework for e2e performance tests

37 lines 4.88 kB
/** * @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 */ export class Statistic { static calculateCoefficientOfVariation(sample, mean) { return Statistic.calculateStandardDeviation(sample, mean) / mean * 100; } static calculateMean(samples) { let total = 0; // TODO: use reduce samples.forEach(x => total += x); return total / samples.length; } static calculateStandardDeviation(samples, mean) { let deviation = 0; // TODO: use reduce samples.forEach(x => deviation += Math.pow(x - mean, 2)); deviation = deviation / (samples.length); deviation = Math.sqrt(deviation); return deviation; } static calculateRegressionSlope(xValues, xMean, yValues, yMean) { // See https://en.wikipedia.org/wiki/Simple_linear_regression let dividendSum = 0; let divisorSum = 0; for (let i = 0; i < xValues.length; i++) { dividendSum += (xValues[i] - xMean) * (yValues[i] - yMean); divisorSum += Math.pow(xValues[i] - xMean, 2); } return dividendSum / divisorSum; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmVuY2hwcmVzcy9zcmMvc3RhdGlzdGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyxTQUFTO0lBQ3BCLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxNQUFnQixFQUFFLElBQVk7UUFDbkUsT0FBTyxTQUFTLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBaUI7UUFDcEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsbUJBQW1CO1FBQ25CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakMsT0FBTyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLDBCQUEwQixDQUFDLE9BQWlCLEVBQUUsSUFBWTtRQUMvRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsbUJBQW1CO1FBQ25CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsU0FBUyxHQUFHLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxDQUFDLHdCQUF3QixDQUMzQixPQUFpQixFQUFFLEtBQWEsRUFBRSxPQUFpQixFQUFFLEtBQWE7UUFDcEUsNkRBQTZEO1FBQzdELElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzNELFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0M7UUFDRCxPQUFPLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCBjbGFzcyBTdGF0aXN0aWMge1xuICBzdGF0aWMgY2FsY3VsYXRlQ29lZmZpY2llbnRPZlZhcmlhdGlvbihzYW1wbGU6IG51bWJlcltdLCBtZWFuOiBudW1iZXIpIHtcbiAgICByZXR1cm4gU3RhdGlzdGljLmNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uKHNhbXBsZSwgbWVhbikgLyBtZWFuICogMTAwO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZU1lYW4oc2FtcGxlczogbnVtYmVyW10pIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIC8vIFRPRE86IHVzZSByZWR1Y2VcbiAgICBzYW1wbGVzLmZvckVhY2goeCA9PiB0b3RhbCArPSB4KTtcbiAgICByZXR1cm4gdG90YWwgLyBzYW1wbGVzLmxlbmd0aDtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbihzYW1wbGVzOiBudW1iZXJbXSwgbWVhbjogbnVtYmVyKSB7XG4gICAgbGV0IGRldmlhdGlvbiA9IDA7XG4gICAgLy8gVE9ETzogdXNlIHJlZHVjZVxuICAgIHNhbXBsZXMuZm9yRWFjaCh4ID0+IGRldmlhdGlvbiArPSBNYXRoLnBvdyh4IC0gbWVhbiwgMikpO1xuICAgIGRldmlhdGlvbiA9IGRldmlhdGlvbiAvIChzYW1wbGVzLmxlbmd0aCk7XG4gICAgZGV2aWF0aW9uID0gTWF0aC5zcXJ0KGRldmlhdGlvbik7XG4gICAgcmV0dXJuIGRldmlhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVSZWdyZXNzaW9uU2xvcGUoXG4gICAgICB4VmFsdWVzOiBudW1iZXJbXSwgeE1lYW46IG51bWJlciwgeVZhbHVlczogbnVtYmVyW10sIHlNZWFuOiBudW1iZXIpIHtcbiAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2ltcGxlX2xpbmVhcl9yZWdyZXNzaW9uXG4gICAgbGV0IGRpdmlkZW5kU3VtID0gMDtcbiAgICBsZXQgZGl2aXNvclN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkaXZpZGVuZFN1bSArPSAoeFZhbHVlc1tpXSAtIHhNZWFuKSAqICh5VmFsdWVzW2ldIC0geU1lYW4pO1xuICAgICAgZGl2aXNvclN1bSArPSBNYXRoLnBvdyh4VmFsdWVzW2ldIC0geE1lYW4sIDIpO1xuICAgIH1cbiAgICByZXR1cm4gZGl2aWRlbmRTdW0gLyBkaXZpc29yU3VtO1xuICB9XG59XG4iXX0=