$("#run").click(function() {
/* Results Table Manipulation */
var resultsTable = $("#results-table");
function appendHeading(heading) {
resultsTable.append(
"
" + heading + " |
"
);
}
function appendResult(klass, title, url, inputSize, parseTime) {
var KB = 1024;
var MS_IN_S = 1000;
resultsTable.append(
""
+ ""
+ (url !== null ? "" : "")
+ title
+ (url !== null ? "" : "")
+ " | "
+ ""
+ ""
+ (inputSize / KB).toFixed(2)
+ ""
+ " kB"
+ " | "
+ ""
+ ""
+ parseTime.toFixed(2)
+ ""
+ " ms"
+ " | "
+ ""
+ ""
+ ((inputSize / KB) / (parseTime / MS_IN_S)).toFixed(2)
+ ""
+ " kB/s"
+ " | "
+ "
"
);
}
/* Main */
/*
* Each input is parsed multiple times and the results are averaged. We
* do this for two reasons:
*
* 1. To warm up the interpreter (PEG.js-generated parsers will be
* most likely used repeatedly, so it makes sense to measure
* performance after warming up).
*
* 2. To minimize random errors.
*/
var runCount = parseInt($("#run-count").val(), 10);
if (isNaN(runCount) || runCount <= 0) {
alert("Number of runs must be a positive integer.");
return;
}
var options = {
cache: $("#cache").is(":checked"),
trackLineAndColumn: $("#track-line-and-column").is(":checked")
};
Runner.run(benchmarks, runCount, options, {
readFile: function(file) {
return $.ajax({
type: "GET",
url: file,
dataType: "text",
async: false
}).responseText;
},
testStart: function(benchmark, test) {
/* Nothing to do. */
},
testFinish: function(benchmark, test, inputSize, parseTime) {
appendResult(
"individual",
test.title,
benchmark.id + "/" + test.file,
inputSize,
parseTime
);
},
benchmarkStart: function(benchmark) {
appendHeading(benchmark.title);
},
benchmarkFinish: function(benchmark, inputSize, parseTime) {
appendResult(
"benchmark-total",
benchmark.title + " total",
null,
inputSize,
parseTime
);
},
start: function() {
$("#run-count, #cache, #track-line-and-column, #run").attr("disabled", "disabled");
resultsTable.show();
$("#results-table tr").slice(1).remove();
},
finish: function(inputSize, parseTime) {
appendResult(
"total",
"Total",
null,
inputSize,
parseTime
);
$.scrollTo("max", { axis: "y", duration: 500 });
$("#run-count, #cache, #track-line-and-column, #run").removeAttr("disabled");
}
});
});
$(document).ready(function() {
$("#run").focus();
});