2 document.getElementById("log").innerText += text + "\n";
3 window.scrollTo(document.body.height);
6 function loadFile(path) {
7 var xhr = new XMLHttpRequest();
8 xhr.open("GET", path, false);
10 return xhr.responseText;
14 var runFunction = function() {};
15 var completedRuns = -1; // Discard the any runs < 0.
18 function computeAverage(values) {
20 for (var i = 0; i < values.length; i++)
22 return sum / values.length;
25 function computeMax(values) {
26 var max = values.length ? values[0] : 0;
27 for (var i = 1; i < values.length; i++) {
34 function computeMedian(values) {
35 values.sort(function(a, b) { return a - b; });
36 var len = values.length;
38 return values[(len-1)/2];
39 return (values[len/2-1] + values[len/2]) / 2;
42 function computeMin(values) {
43 var min = values.length ? values[0] : 0;
44 for (var i = 1; i < values.length; i++) {
51 function computeStdev(values) {
52 var average = computeAverage(values);
53 var sumOfSquaredDeviations = 0;
54 for (var i = 0; i < values.length; ++i) {
55 var deviation = values[i] - average;
56 sumOfSquaredDeviations += deviation * deviation;
58 return Math.sqrt(sumOfSquaredDeviations / values.length);
61 function logStatistics(times) {
63 log("avg " + computeAverage(times));
64 log("median " + computeMedian(times));
65 log("stdev " + computeStdev(times));
66 log("min " + computeMin(times));
67 log("max " + computeMax(times));
71 var start = new Date();
72 for (var i = 0; i < 10; ++i)
74 var time = new Date() - start;
76 if (completedRuns <= 0) {
77 log("Ignoring warm-up run (" + time + ")");
82 if (completedRuns < window.runCount) {
83 window.setTimeout(run, 0);
89 function start(runCount, runFunction) {
90 window.runCount = runCount;
91 window.runFunction = runFunction;
93 log("Running " + runCount + " times");