benchpress
Version:
Benchpress - a framework for e2e performance tests
31 lines • 4.59 kB
JavaScript
import { Math } from 'angular2/src/facade/math';
export class Statistic {
static calculateCoefficientOfVariation(sample, mean) {
return Statistic.calculateStandardDeviation(sample, mean) / mean * 100;
}
static calculateMean(samples) {
var total = 0;
// TODO: use reduce
samples.forEach(x => total += x);
return total / samples.length;
}
static calculateStandardDeviation(samples, mean) {
var 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 http://en.wikipedia.org/wiki/Simple_linear_regression
var dividendSum = 0;
var divisorSum = 0;
for (var 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGlzdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC14QkxJQnJWUi50bXAvYmVuY2hwcmVzcy9zcmMvc3RhdGlzdGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sMEJBQTBCO0FBRTdDO0lBQ0UsT0FBTywrQkFBK0IsQ0FBQyxNQUFNLEVBQUUsSUFBSTtRQUNqRCxNQUFNLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxPQUFPLGFBQWEsQ0FBQyxPQUFpQjtRQUNwQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxtQkFBbUI7UUFDbkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTywwQkFBMEIsQ0FBQyxPQUFpQixFQUFFLElBQUk7UUFDdkQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLG1CQUFtQjtRQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsU0FBUyxHQUFHLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDLE9BQWlCLEVBQUUsS0FBYSxFQUFFLE9BQWlCLEVBQ25ELEtBQWE7UUFDM0MsNERBQTREO1FBQzVELElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzNELFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2xDLENBQUM7QUFDSCxDQUFDO0FBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01hdGh9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvbWF0aCc7XG5cbmV4cG9ydCBjbGFzcyBTdGF0aXN0aWMge1xuICBzdGF0aWMgY2FsY3VsYXRlQ29lZmZpY2llbnRPZlZhcmlhdGlvbihzYW1wbGUsIG1lYW4pIHtcbiAgICByZXR1cm4gU3RhdGlzdGljLmNhbGN1bGF0ZVN0YW5kYXJkRGV2aWF0aW9uKHNhbXBsZSwgbWVhbikgLyBtZWFuICogMTAwO1xuICB9XG5cbiAgc3RhdGljIGNhbGN1bGF0ZU1lYW4oc2FtcGxlczogbnVtYmVyW10pIHtcbiAgICB2YXIgdG90YWwgPSAwO1xuICAgIC8vIFRPRE86IHVzZSByZWR1Y2VcbiAgICBzYW1wbGVzLmZvckVhY2goeCA9PiB0b3RhbCArPSB4KTtcbiAgICByZXR1cm4gdG90YWwgLyBzYW1wbGVzLmxlbmd0aDtcbiAgfVxuXG4gIHN0YXRpYyBjYWxjdWxhdGVTdGFuZGFyZERldmlhdGlvbihzYW1wbGVzOiBudW1iZXJbXSwgbWVhbikge1xuICAgIHZhciBkZXZpYXRpb24gPSAwO1xuICAgIC8vIFRPRE86IHVzZSByZWR1Y2VcbiAgICBzYW1wbGVzLmZvckVhY2goeCA9PiBkZXZpYXRpb24gKz0gTWF0aC5wb3coeCAtIG1lYW4sIDIpKTtcbiAgICBkZXZpYXRpb24gPSBkZXZpYXRpb24gLyAoc2FtcGxlcy5sZW5ndGgpO1xuICAgIGRldmlhdGlvbiA9IE1hdGguc3FydChkZXZpYXRpb24pO1xuICAgIHJldHVybiBkZXZpYXRpb247XG4gIH1cblxuICBzdGF0aWMgY2FsY3VsYXRlUmVncmVzc2lvblNsb3BlKHhWYWx1ZXM6IG51bWJlcltdLCB4TWVhbjogbnVtYmVyLCB5VmFsdWVzOiBudW1iZXJbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5TWVhbjogbnVtYmVyKSB7XG4gICAgLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2ltcGxlX2xpbmVhcl9yZWdyZXNzaW9uXG4gICAgdmFyIGRpdmlkZW5kU3VtID0gMDtcbiAgICB2YXIgZGl2aXNvclN1bSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkaXZpZGVuZFN1bSArPSAoeFZhbHVlc1tpXSAtIHhNZWFuKSAqICh5VmFsdWVzW2ldIC0geU1lYW4pO1xuICAgICAgZGl2aXNvclN1bSArPSBNYXRoLnBvdyh4VmFsdWVzW2ldIC0geE1lYW4sIDIpO1xuICAgIH1cbiAgICByZXR1cm4gZGl2aWRlbmRTdW0gLyBkaXZpc29yU3VtO1xuICB9XG59XG4iXX0=