- add sources.
[platform/framework/web/crosswalk.git] / src / tools / page_cycler / common / report.html
1 <html>
2 <head>
3 <style>
4 .discarded {
5   color: #C0C0C0;
6 }
7 </style>
8 <h2>Summary</h2>
9 <dl>
10 <script src="head.js"></script>
11 <script>
12 var __results = true;
13 var cycles = 0;
14 var s = document.location.search.substring(1);
15 var params = s.split('&');
16 var iterations, pages, totalTime, fudgeTime;
17 for (var i = 0; i < params.length; ++i) {
18   var f = params[i].split('=');
19   switch (f[0]) {
20   case 'n':
21     iterations = (f[1] - 0);
22     break;
23   case 'i':
24     cycle = (f[1] - 0);
25     break;
26   case 'td':
27     totalTime = (f[1] - 0);
28     break;
29   case 'tf':
30     fudgeTime = (f[1] - 0);
31     break;
32   }
33 }
34 var pages = cycle / iterations;
35 document.write("<table border=1>");
36 document.write("<tr><td>iterations</td><td>" + iterations + "</td></tr>");
37 document.write("<tr><td>pages</td><td>" + pages + "</td></tr>");
38 document.write("<tr><td>milliseconds</td><td>" + totalTime + "</td></tr>");
39 document.write("<tr><td>mean per set</td><td>" + (totalTime / iterations).toFixed(2) + "</td></tr>");
40 document.write("<tr><td>mean per page</td><td>" + (totalTime / iterations / pages).toFixed(2) + "</td></tr>");
41 document.write("<tr><td>timer lag</td><td>" + (fudgeTime).toFixed(2) + "</td></tr>");
42 document.write("<tr><td>timer lag per page</td><td>" + (fudgeTime / iterations / pages).toFixed(2) + "</td></tr>");
43 document.write("</table>");
44
45   // returns an object with the following properties:
46   //   min  : min value of array elements
47   //   max  : max value of array elements
48   //   mean : mean value of array elements
49   //   vari : variance computation
50   //   stdd : standard deviation, sqrt(vari)
51   //   indexOfMax : index of max element (the element that is
52   //                removed from the mean computation)
53   function getArrayStats(ary) {
54     var r = {};
55     r.min = ary[0];
56     r.max = ary[0];
57     r.indexOfMax = 0;
58     var sum = 0;
59     for (var i = 0; i < ary.length; ++i) {
60       if (ary[i] < r.min) {
61         r.min = ary[i];
62       } else if (ary[i] > r.max) {
63         r.max = ary[i];
64         r.indexOfMax = i;
65       }
66       sum = sum + ary[i];
67     }
68
69     // ignore max value when computing mean and stddev
70     r.mean = (sum - r.max) / (ary.length - 1);
71
72     r.vari = 0;
73     for (var i = 0; i < ary.length; ++i) {
74       if (i == r.indexOfMax)
75         continue;
76       var d = r.mean - ary[i];
77       r.vari = r.vari + d * d;
78     }
79
80     r.vari = r.vari / (ary.length - 1);
81     r.stdd = Math.sqrt(r.vari);
82     r.errp = r.stdd / Math.sqrt((ary.length - 1) / 2) / r.mean * 100;
83     return r;
84   }
85
86   function appendTableCol(tr, text, linkify) {
87     var doc = tr.ownerDocument;
88     var td = doc.createElement("TD");
89     
90     if (linkify) {
91       var anchor = doc.createElement("A");
92       if (text.indexOf('http://localhost:') == 0 ||
93           text.indexOf('file://') == 0) {
94         // URLs for page cycler HTTP and file tests.
95         anchor.href = text + "/index.html?skip=true";
96       } else {
97         // For Web Page Replay, URLs are same as recorded pages.
98         anchor.href = text;
99       }
100       anchor.appendChild(doc.createTextNode(text));
101       td.appendChild(anchor);
102     }
103     else 
104       td.appendChild(doc.createTextNode(text));
105     tr.appendChild(td);
106     return td;
107   }
108   
109   function getTimeVals() {
110     var rawData = __get_timings().split(",");
111     var timeVals = [];
112     for (var i = 0; i < iterations; ++i) {
113       for (var j = 0; j < pages; ++j) {
114         if (!timeVals[j])
115           timeVals[j] = [];
116         timeVals[j].push(parseInt(rawData[j + i*pages]));
117       }
118     }
119     return timeVals;
120   }
121
122   function showReport() {
123     var tbody = document.getElementById("tbody");
124     var colsums = [0,0,0,0,0];
125     var timeVals = getTimeVals();
126     for (var i = 0; i < timeVals.length; ++i) {
127       var tr = document.createElement("TR");
128
129       appendTableCol(tr, __pages()[i], true);
130
131       var r = getArrayStats(timeVals[i]);
132       appendTableCol(tr, r.min.toFixed(2));
133       appendTableCol(tr, r.max.toFixed(2));
134       appendTableCol(tr, r.mean.toFixed(2));
135       appendTableCol(tr, r.stdd.toFixed(2));
136       appendTableCol(tr, r.errp.toFixed(2));
137       //appendTableCol(tr, r.chi2.toFixed(2));
138
139       for (var j = 0; j < timeVals[i].length; ++j) {
140         var tv = timeVals[i][j];
141         var td = appendTableCol(tr, tv);
142         if (j == r.indexOfMax)
143           td.setAttribute("class", "discarded");
144       }
145
146       colsums[0] = colsums[0] + r.min;
147       colsums[1] = colsums[1] + r.max;
148       colsums[2] = colsums[2] + r.mean;
149       colsums[3] = colsums[3] + r.stdd;
150       colsums[4] = colsums[4] + r.errp;
151
152       tbody.appendChild(tr);
153     }
154
155     var tr = document.createElement("TR");
156     appendTableCol(tr, "totals:");
157     for (var k = 0; k < colsums.length; ++k)
158       appendTableCol(tr, colsums[k].toFixed(2));
159     tbody.appendChild(tr);
160   }
161   window.onload = showReport;
162
163 </script>
164 </dl>
165 </head>
166 <body>
167 <h2>Complete Statistics</h2>
168 <table border="1">
169 <thead>
170 <tr>
171   <th>Site</th>
172   <th>Min</th>
173   <th>Max</th>
174   <th>Mean</th>
175   <th>Std.d</th>
176   <th>Err %</th>
177   <th colspan="10">Runs</th>
178 </tr>
179 </thead>
180 <tbody id="tbody"></tbody>
181 </table>
182 </body>
183 </html>