WebCore/benchmarks/parser/html-parser.html
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     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>