diff options
Diffstat (limited to 'WebCore/benchmarks/parser/html-parser.html')
-rw-r--r-- | WebCore/benchmarks/parser/html-parser.html | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/WebCore/benchmarks/parser/html-parser.html b/WebCore/benchmarks/parser/html-parser.html new file mode 100644 index 0000000..24810da --- /dev/null +++ b/WebCore/benchmarks/parser/html-parser.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<body> +<pre id="log"></pre> +<script> +function log(text) { + document.getElementById("log").innerText += text + "\n"; + window.scrollTo(document.body.height); +} + +function loadFile(path) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", path, false); + xhr.send(null); + return xhr.responseText; +} + +var spec = loadFile("resources/html5.html"); + +function parse(html) { + var iframe = document.createElement("iframe"); + iframe.src = "about:blank"; + iframe.style.display = "none"; + document.body.appendChild(iframe) + var detachedElement = iframe.contentDocument.createElement("div"); + detachedElement.innerHTML = html; + document.body.removeChild(iframe) +} + +var runCount = 20; +var completedRuns = -1; // Discard the any runs < 0. +var times = []; + +function computeAverage(values) { + var sum = 0; + for (var i = 0; i < values.length; i++) + sum += values[i]; + return sum / values.length; +} + +function computeStdev(values) { + var average = computeAverage(values); + var sumOfSquaredDeviations = 0; + for (var i = 0; i < values.length; ++i) { + var deviation = values[i] - average; + sumOfSquaredDeviations += deviation * deviation; + } + return Math.sqrt(sumOfSquaredDeviations / values.length); +} + +function logStatistics(times) { + log(""); + log("avg " + computeAverage(times)); + log("stdev " + computeStdev(times)); +} + +function run() { + var start = new Date(); + for (var i = 0; i < 10; ++i) + parse(spec); + var time = new Date() - start; + completedRuns++; + if (completedRuns <= 0) { + log("Ignoring warm-up run (" + time + ")"); + } else { + times.push(time); + log(time); + } + if (completedRuns < runCount) { + window.setTimeout(run, 0); + } else { + logStatistics(times); + } +} + +log("Running " + runCount + " times"); +run(); +</script> +</body> |