summaryrefslogtreecommitdiffstats
path: root/WebCore/benchmarks/parser/html-parser.html
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/benchmarks/parser/html-parser.html')
-rw-r--r--WebCore/benchmarks/parser/html-parser.html78
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>