<html> <head> <style> .discarded { color: #C0C0C0; } </style> <h2>Summary</h2> <dl> <script src="head.js"></script> <script> var __results = true; var cycles = 0; var s = document.location.search.substring(1); var params = s.split('&'); var iterations, pages, totalTime, fudgeTime; for (var i = 0; i < params.length; ++i) { var f = params[i].split('='); switch (f[0]) { case 'n': iterations = (f[1] - 0); break; case 'i': cycle = (f[1] - 0); break; case 'td': totalTime = (f[1] - 0); break; case 'tf': fudgeTime = (f[1] - 0); break; } } var pages = cycle / iterations; document.write("<table border=1>"); document.write("<tr><td>iterations</td><td>" + iterations + "</td></tr>"); document.write("<tr><td>pages</td><td>" + pages + "</td></tr>"); document.write("<tr><td>milliseconds</td><td>" + totalTime + "</td></tr>"); document.write("<tr><td>mean per set</td><td>" + (totalTime / iterations).toFixed(2) + "</td></tr>"); document.write("<tr><td>mean per page</td><td>" + (totalTime / iterations / pages).toFixed(2) + "</td></tr>"); document.write("<tr><td>timer lag</td><td>" + (fudgeTime).toFixed(2) + "</td></tr>"); document.write("<tr><td>timer lag per page</td><td>" + (fudgeTime / iterations / pages).toFixed(2) + "</td></tr>"); document.write("</table>"); // returns an object with the following properties: // min : min value of array elements // max : max value of array elements // mean : mean value of array elements // vari : variance computation // stdd : standard deviation, sqrt(vari) // indexOfMax : index of max element (the element that is // removed from the mean computation) function getArrayStats(ary) { var r = {}; r.min = ary[0]; r.max = ary[0]; r.indexOfMax = 0; var sum = 0; for (var i = 0; i < ary.length; ++i) { if (ary[i] < r.min) { r.min = ary[i]; } else if (ary[i] > r.max) { r.max = ary[i]; r.indexOfMax = i; } sum = sum + ary[i]; } // ignore max value when computing mean and stddev r.mean = (sum - r.max) / (ary.length - 1); r.vari = 0; for (var i = 0; i < ary.length; ++i) { if (i == r.indexOfMax) continue; var d = r.mean - ary[i]; r.vari = r.vari + d * d; } r.vari = r.vari / (ary.length - 1); r.stdd = Math.sqrt(r.vari); r.errp = r.stdd / Math.sqrt((ary.length - 1) / 2) / r.mean * 100; return r; } function appendTableCol(tr, text, linkify) { var doc = tr.ownerDocument; var td = doc.createElement("TD"); if (linkify) { var anchor = doc.createElement("A"); if (text.indexOf('http://localhost:') == 0 || text.indexOf('file://') == 0) { // URLs for page cycler HTTP and file tests. anchor.href = text + "/index.html?skip=true"; } else { // For Web Page Replay, URLs are same as recorded pages. anchor.href = text; } anchor.appendChild(doc.createTextNode(text)); td.appendChild(anchor); } else td.appendChild(doc.createTextNode(text)); tr.appendChild(td); return td; } function getTimeVals() { var rawData = __get_timings().split(","); var timeVals = []; for (var i = 0; i < iterations; ++i) { for (var j = 0; j < pages; ++j) { if (!timeVals[j]) timeVals[j] = []; timeVals[j].push(parseInt(rawData[j + i*pages])); } } return timeVals; } function showReport() { var tbody = document.getElementById("tbody"); var colsums = [0,0,0,0,0]; var timeVals = getTimeVals(); for (var i = 0; i < timeVals.length; ++i) { var tr = document.createElement("TR"); appendTableCol(tr, __pages()[i], true); var r = getArrayStats(timeVals[i]); appendTableCol(tr, r.min.toFixed(2)); appendTableCol(tr, r.max.toFixed(2)); appendTableCol(tr, r.mean.toFixed(2)); appendTableCol(tr, r.stdd.toFixed(2)); appendTableCol(tr, r.errp.toFixed(2)); //appendTableCol(tr, r.chi2.toFixed(2)); for (var j = 0; j < timeVals[i].length; ++j) { var tv = timeVals[i][j]; var td = appendTableCol(tr, tv); if (j == r.indexOfMax) td.setAttribute("class", "discarded"); } colsums[0] = colsums[0] + r.min; colsums[1] = colsums[1] + r.max; colsums[2] = colsums[2] + r.mean; colsums[3] = colsums[3] + r.stdd; colsums[4] = colsums[4] + r.errp; tbody.appendChild(tr); } var tr = document.createElement("TR"); appendTableCol(tr, "totals:"); for (var k = 0; k < colsums.length; ++k) appendTableCol(tr, colsums[k].toFixed(2)); tbody.appendChild(tr); } window.onload = showReport; </script> </dl> </head> <body> <h2>Complete Statistics</h2> <table border="1"> <thead> <tr> <th>Site</th> <th>Min</th> <th>Max</th> <th>Mean</th> <th>Std.d</th> <th>Err %</th> <th colspan="10">Runs</th> </tr> </thead> <tbody id="tbody"></tbody> </table> </body> </html>