|
1 <!DOCTYPE html> |
|
2 <body> |
|
3 <pre id="log"></pre> |
|
4 <script> |
|
5 function log(text) { |
|
6 document.getElementById("log").innerText += text + "\n"; |
|
7 window.scrollTo(document.body.height); |
|
8 } |
|
9 |
|
10 function loadFile(path) { |
|
11 var xhr = new XMLHttpRequest(); |
|
12 xhr.open("GET", path, false); |
|
13 xhr.send(null); |
|
14 return xhr.responseText; |
|
15 } |
|
16 |
|
17 var spec = loadFile("resources/html5.html"); |
|
18 |
|
19 function parse(html) { |
|
20 var iframe = document.createElement("iframe"); |
|
21 iframe.src = "about:blank"; |
|
22 iframe.style.display = "none"; |
|
23 document.body.appendChild(iframe) |
|
24 iframe.contentDocument.open(); |
|
25 iframe.contentDocument.write(html); |
|
26 iframe.contentDocument.close(); |
|
27 document.body.removeChild(iframe) |
|
28 } |
|
29 |
|
30 var runCount = 20; |
|
31 var completedRuns = -1; // Discard the any runs < 0. |
|
32 var times = []; |
|
33 |
|
34 function computeAverage(values) { |
|
35 var sum = 0; |
|
36 for (var i = 0; i < values.length; i++) |
|
37 sum += values[i]; |
|
38 return sum / values.length; |
|
39 } |
|
40 |
|
41 function computeStdev(values) { |
|
42 var average = computeAverage(values); |
|
43 var sumOfSquaredDeviations = 0; |
|
44 for (var i = 0; i < values.length; ++i) { |
|
45 var deviation = values[i] - average; |
|
46 sumOfSquaredDeviations += deviation * deviation; |
|
47 } |
|
48 return Math.sqrt(sumOfSquaredDeviations / values.length); |
|
49 } |
|
50 |
|
51 function logStatistics(times) { |
|
52 log(""); |
|
53 log("avg " + computeAverage(times)); |
|
54 log("stdev " + computeStdev(times)); |
|
55 } |
|
56 |
|
57 function run() { |
|
58 var start = new Date(); |
|
59 for (var i = 0; i < 10; ++i) |
|
60 parse(spec); |
|
61 var time = new Date() - start; |
|
62 completedRuns++; |
|
63 if (completedRuns <= 0) { |
|
64 log("Ignoring warm-up run (" + time + ")"); |
|
65 } else { |
|
66 times.push(time); |
|
67 log(time); |
|
68 } |
|
69 if (completedRuns < runCount) { |
|
70 window.setTimeout(run, 0); |
|
71 } else { |
|
72 logStatistics(times); |
|
73 } |
|
74 } |
|
75 |
|
76 log("Running " + runCount + " times"); |
|
77 run(); |
|
78 </script> |
|
79 </body> |