Example #1
0
 L.each(this._customStats, function(ns, name) {
   result.customStats[name] = {
     min: round(L.min(ns), 1),
     max: round(L.max(ns), 1),
     median: round(sl.median(ns), 1),
     p95: round(sl.percentile(ns, 0.95), 1),
     p99: round(sl.percentile(ns, 0.99), 1)
   };
 });
Example #2
0
function load() {
  batches--
  if (batches <= 0) {
    console.log("max: %s", Math.max.apply(null, runs))
    console.log("avg: %s", stats.mean(runs))
    console.log("std dev: %s", stats.stdev(runs))
    console.log("25th percentile: %s", stats.percentile(runs, 0.25))
    console.log("median: %s", stats.median(runs))
    console.log("75th percentile: %s", stats.percentile(runs, 0.75))
    return
  }
  putBatch(load)
}
Example #3
0
Stats.prototype.report = function () {
  var result = {};

  result.timestamp = new Date().toISOString();
  result.scenariosCreated = this._generatedScenarios;
  result.scenariosCompleted = this._completedScenarios;
  result.requestsCompleted = this._completedRequests;

  var latencies = L.map(this._entries, function (e) {
    return e[2];
  });

  result.latency = {
    min: round(L.min(latencies) / 1e6, 1),
    max: round(L.max(latencies) / 1e6, 1),
    median: round(sl.median(latencies) / 1e6, 1),
    p95: round(sl.percentile(latencies, 0.95) / 1e6, 1),
    p99: round(sl.percentile(latencies, 0.99) / 1e6, 1)
  };

  var startedAt = L.min(this._requestTimestamps);
  var now = Date.now();
  var count = L.size(this._requestTimestamps);
  var mean = Math.round(count / (Math.round((now - startedAt) / 10) / 100) * 100) / 100;

  result.rps = {
    count: count,
    mean: mean
  };

  result.scenarioDuration = {
    min: round(L.min(this._scenarioLatencies) / 1e6, 1),
    max: round(L.max(this._scenarioLatencies) / 1e6, 1),
    median: round(sl.median(this._scenarioLatencies) / 1e6, 1),
    p95: round(sl.percentile(this._scenarioLatencies, 0.95) / 1e6, 1),
    p99: round(sl.percentile(this._scenarioLatencies, 0.99) / 1e6, 1)
  };

  result.errors = this._errors;
  result.codes = this._codes;
  result.matches = this._matches;

  result.latencies = this.getEntries();

  return result;
};
Example #4
0
function printReport(reports) {
  var latencies = L.map(L.flatten(reports), function(rec) {
    return rec[2];
  });

  var min = round(L.min(latencies) / 1e6, 1);
  var max = round(L.max(latencies) / 1e6, 1);
  var median = round(sl.median(latencies) / 1e6, 1);
  var p95 = round(sl.percentile(latencies, 0.95) / 1e6, 1);
  var p99 = round(sl.percentile(latencies, 0.99) / 1e6, 1);

  console.log('Response times so far:');
  console.log('  min: %s', min);
  console.log('  max: %s', max);
  console.log('  p50: %s', median);
  console.log('  p95: %s', p95);
  console.log('  p99: %s', p99);
}
Example #5
0
Metrix.prototype.getStatistics = function (callback /* error, result*/) {
	var ms = new Date().getTime();
	var bucket = getBucket(ms) -1 ; // Do not want to use the current bucket as it is not complete
	
	var index = this.ts.length-1;
	if (index<0) // no data
	{
		this.statistics = {bucket: bucket, statistics: {total: 0, error:0, errorRate:0, totalCircuitOpen: 0, totalTimeout:0, mean:0, stddev:0, percentile: {"0":0, "25":0,"50":0,"75":0,"90":0,"95":0,"99":0 ,"99.5":0,"100":0}}};
		callback(null, this.statistics);
		return;
	}

	if (this.statistics && this.statistics.bucket == bucket ) // the last calculated one is the current one
	{
		callback(null, this.statistics);
		return;
	}

	// Now need to calculate new value
	var totalList = [];
	var totalError = 0;
	var totalCircuitOpen =0;
	var totalTimeout = 0;
	
	for (var i = index; i>=0 && this.ts[i]>bucket-bucketLength; i--)
	{
		totalList = totalList.concat(this.data[i]);
		totalError += this.error[i];
		totalCircuitOpen += this.circuitOpen[i];
		totalTimeout += this.timeout[i];
	}
	if (totalList.length==0) // no data
	{
		this.statistics = {bucket: bucket, statistics: {total: 0, error:0, errorRate:0, totalCircuitOpen: 0, totalTimeout:0, mean:0, stddev:0, percentile: {"0":0, "25":0,"50":0,"75":0,"90":0,"95":0,"99":0 ,"99.5":0,"100":0}}};
		callback(null, this.statistics);
		return;
	}

	var errorRate = totalError / totalList.length;
	this.statistics = {"bucket": bucket, "statistics": {"total": totalList.length, "error": totalError, "errorRate": errorRate, "totalCircuitOpen": totalCircuitOpen, "totalTimeout":totalTimeout, "mean": stats.mean(totalList), "stddev": stats.stdev(totalList),
		percentile:{"0":stats.percentile(totalList, 0), "25":stats.percentile(totalList, 0.25),"50":stats.percentile(totalList, 0.5),
					"75":stats.percentile(totalList, 0.75),"90":stats.percentile(totalList, 0.9),"95":stats.percentile(totalList, 0.95),
					"99":stats.percentile(totalList, 0.99) || 0,"99.5":stats.percentile(totalList, 0.995) ||0,"100":stats.percentile(totalList, 1) ||0}}}
	
	//console.log("calculate",this.statistics); 
	callback(null, this.statistics);
};
Example #6
0
    .forEach(function(key) {
      var values = results[key];
      var percentile = stats.percentile(values, 0.95);

      metrics.push({
        Metric: key,
        Mean: stats.mean(values).toFixed(3),
        Median: stats.median(values).toFixed(3),
        Min: Math.min.apply(Math, values).toFixed(3),
        Max: Math.max.apply(Math, values).toFixed(3),
        StdDev: stats.stdev(values).toFixed(3),
        p95: percentile ? percentile.toFixed(3) : 'n/a'
      });
    });
Example #7
0
  self.drawChart = function drawChart(filter) {
    $('#trades_chart').html('');
    if (filter.inputTokenAddress) {
      const trades = self.tradesCache.filter(trade =>
        (!filter.inputTokenAddress ||
         (trade.tokenGet.addr.toLowerCase() === filter.inputTokenAddress.toLowerCase() ||
          trade.tokenGive.addr.toLowerCase() === filter.inputTokenAddress.toLowerCase())))
      .sort((a, b) => a.date - b.date);

      const rows = trades.map((trade) => {
        const price = trade.tokenGet.name === 'ETH' ?
          trade.amountGet.div(trade.amountGive).toNumber() :
          trade.amountGive.div(trade.amountGet).toNumber();
        return [trade.date, price];
      });

      const values = rows.map(x => x[1]);
      const phigh = stats.percentile(values, 0.95);
      const plow = stats.percentile(values, 0.05);

      const filteredRows = rows.filter(x => x[1] >= plow && x[1] <= phigh);

      if (filteredRows.length > 1) {
        const interval = 1 * 60 * 60 * 1000;
        let start = filteredRows[0][0];
        let points = [];
        const intervals = [];
        filteredRows.forEach((row) => {
          const [date, point] = row;
          if (date - start > interval) {
            if (points.length > 0) {
              const low = Math.min.apply(null, points);
              const high = Math.max.apply(null, points);
              const open = points[0];
              const close = points[points.length - 1];
              if (close > open) {
                intervals.push([start, low, open, close, high]);
              } else {
                intervals.push([start, high, close, open, low]);
              }
            }
            start = new Date(start.getTime() + interval);
            points = [];
          }
          points.push(point);
        });

        const data = google.visualization.arrayToDataTable(intervals, true);

        const options = {
          width: 900,
          height: 500,
          legend: { position: 'none' },
          enableInteractivity: false,
          chartArea: {
            width: '85%',
          },
          hAxis: {
            viewWindow: {
              min: filteredRows[0].date,
              max: filteredRows[filteredRows.length - 1].date,
            },
            gridlines: {
              count: -1,
              units: {
                days: { format: ['MMM dd'] },
                hours: { format: ['HH:mm', 'ha'] },
              },
            },
            minorGridlines: {
              units: {
                hours: { format: ['hh:mm:ss a', 'ha'] },
                minutes: { format: ['HH:mm a Z', ':mm'] },
              },
            },
          },
        };

        const chart = new google.visualization.CandlestickChart(
          document.getElementById('trades_chart'));
        chart.draw(data, options);
      }
    }
  };
Example #8
0
            return totalTries;
        }
    }

    while (hasCardsCount() > 1) {
        turns += playTurn();
    }

    verbose && console.log('GAME OVER! ' + players[0].length + ' to ' + players[1].length);
    return turns;
}


var results = [];
for (var i=0, turns; i<10000; i++) {
    turns = playWar() / 26;
    results.push(turns);
}

console.log("mean: %s", stats.mean(results));
console.log("median: %s", stats.median(results));
console.log("mode: %s", stats.mode(results));
console.log("variance: %s", stats.variance(results));
console.log("standard deviation: %s", stats.stdev(results));
console.log("min: %s", Math.min.apply(null, results));
console.log("max: %s", Math.max.apply(null, results));
console.log("1st percentile: %s", stats.percentile(results, 0.01));
console.log("2nd percentile: %s", stats.percentile(results, 0.02));
console.log("95th percentile: %s", stats.percentile(results, 0.95));
console.log("99th percentile: %s", stats.percentile(results, 0.99));
 const absolutePercentiles = percentiles.map(ptile => percentile(as, ptile));
Example #10
0
Stats.prototype.report = function() {
  let result = {};

  result.timestamp = new Date().toISOString();
  result.scenariosCreated = this._generatedScenarios;
  result.scenariosCompleted = this._completedScenarios;
  result.requestsCompleted = this._completedRequests;

  let latencies = L.map(this._entries, (e) => {
    return e[2];
  });

  result.latency = {
    min: round(L.min(latencies) / 1e6, 1),
    max: round(L.max(latencies) / 1e6, 1),
    median: round(sl.median(latencies) / 1e6, 1),
    p95: round(sl.percentile(latencies, 0.95) / 1e6, 1),
    p99: round(sl.percentile(latencies, 0.99) / 1e6, 1)
  };

  let startedAt = L.min(this._requestTimestamps);
  let now = Date.now();
  let count = L.size(this._requestTimestamps);
  let mean = Math.round(
    (count / (Math.round((now - startedAt) / 10) / 100)) * 100) / 100;

  result.rps = {
    count: count,
    mean: mean
  };

  result.scenarioDuration = {
    min: round(L.min(this._scenarioLatencies) / 1e6, 1),
    max: round(L.max(this._scenarioLatencies) / 1e6, 1),
    median: round(sl.median(this._scenarioLatencies) / 1e6, 1),
    p95: round(sl.percentile(this._scenarioLatencies, 0.95) / 1e6, 1),
    p99: round(sl.percentile(this._scenarioLatencies, 0.99) / 1e6, 1)
  };

  result.scenarioCounts = this._scenarioCounter;

  result.errors = this._errors;
  result.codes = this._codes;
  result.matches = this._matches;

  result.latencies = this.getEntries();

  result.customStats = {};
  L.each(this._customStats, function(ns, name) {
    result.customStats[name] = {
      min: round(L.min(ns), 1),
      max: round(L.max(ns), 1),
      median: round(sl.median(ns), 1),
      p95: round(sl.percentile(ns, 0.95), 1),
      p99: round(sl.percentile(ns, 0.99), 1)
    };
  });

  if (this._concurrency !== null) {
    result.concurrency = this._concurrency;
  }
  result.pendingRequests = this._pendingRequests;

  return result;
};