4 "bugzilla.mozilla.org/",
13 function parseParams() {
14 var s
= document
.location
.search
.substring(1);
15 var params
= s
.split('&');
16 for (var i
= 0; i
< params
.length
; ++i
) {
17 var fields
= params
[i
].split('=');
20 NUM_CYCLES
= (fields
[1] - 0);
23 NUM_PAGES
= (fields
[1] - 0);
26 if (fields
[1] == '1') {
27 pages
= pages
.concat(pages_i18n
);
33 NUM_PAGES
= pages
.length
;
39 var timeVals
= new Array(NUM_PAGES
); // matrix of times
40 for (var i
= 0; i
< timeVals
.length
; ++i
) {
41 timeVals
[i
] = new Array
;
47 // returns an object with the following properties:
48 // min : min value of array elements
49 // max : max value of array elements
50 // mean : mean value of array elements
51 // vari : variance computation
52 // stdd : standard deviation, sqrt(vari)
53 // indexOfMax : index of max element (the element that is
54 // removed from the mean computation)
55 function getArrayStats(ary
) {
61 for (var i
= 0; i
< ary
.length
; ++i
) {
64 } else if (ary
[i
] > r
.max
) {
72 sorted_ary
= ary
.concat();
76 if (sorted_ary
.length
%2) {
77 r
.median
= sorted_ary
[(sorted_ary
.length
-1)/2];
79 var n
= Math
.floor(sorted_ary
.length
/ 2);
80 r
.median
= (sorted_ary
[n
] + sorted_ary
[n
+ 1]) / 2;
83 // ignore max value when computing mean and stddev
84 r
.mean
= (sum
- r
.max
) / (ary
.length
- 1);
87 for (var i
= 0; i
< ary
.length
; ++i
) {
88 if (i
== r
.indexOfMax
)
90 var d
= r
.mean
- ary
[i
];
91 r
.vari
= r
.vari
+ d
* d
;
94 r
.vari
= r
.vari
/ (ary
.length
- 1);
95 r
.stdd
= Math
.sqrt(r
.vari
);
99 function appendTableCol(tr
, text
) {
100 var doc
= tr
.ownerDocument
;
101 var td
= doc
.createElement("TD");
102 td
.appendChild(doc
.createTextNode(text
));
107 function dumpReport() {
108 var all
= new Array();
111 for (var i
= 0; i
< timeVals
.length
; ++i
) {
112 for (var j
= 0; j
< timeVals
[i
].length
; ++j
) {
113 all
[counter
] = timeVals
[i
][j
];
118 // avg and avg median are cumulative for all the pages
119 var avgs
= new Array();
120 var medians
= new Array();
121 for (var i
= 0; i
< timeVals
.length
; ++i
) {
122 avgs
[i
] = getArrayStats(timeVals
[i
]).mean
;
123 medians
[i
] = getArrayStats(timeVals
[i
]).median
;
125 var avg
= getArrayStats(avgs
).mean
;
126 var avgmed
= getArrayStats(medians
).mean
;
128 var r
= getArrayStats(all
);
130 "(tinderbox dropping follows)\n"+
131 "_x_x_mozilla_page_load,"+avgmed
+","+r
.max
+","+r
.min
+"\n"+
132 "_x_x_mozilla_page_load_details,avgmedian|"+avgmed
+"|average|"+avg
.toFixed(2)+"|minimum|"+r
.min
+"|maximum|"+r
.max
+"|stddev|"+r
.stdd
.toFixed(2)+":"
135 for (var i
= 0; i
< timeVals
.length
; ++i
) {
136 r
= getArrayStats(timeVals
[i
]);
146 for (var j
= 0; j
< timeVals
[i
].length
; ++j
) {
154 function showReport() {
155 var doc
= frames
["content"].document
;
156 var tbody
= doc
.getElementById("tbody");
157 for (var i
= 0; i
< timeVals
.length
; ++i
) {
158 var tr
= doc
.createElement("TR");
160 appendTableCol(tr
, pages
[i
]);
162 var r
= getArrayStats(timeVals
[i
]);
163 appendTableCol(tr
, r
.min
.toFixed(2));
164 appendTableCol(tr
, r
.max
.toFixed(2));
165 appendTableCol(tr
, r
.mean
.toFixed(2));
166 appendTableCol(tr
, r
.stdd
.toFixed(2));
167 appendTableCol(tr
, r
.median
.toFixed(2));
169 for (var j
= 0; j
< timeVals
[i
].length
; ++j
) {
170 var tv
= timeVals
[i
][j
];
171 var td
= appendTableCol(tr
, tv
);
172 if (j
== r
.indexOfMax
)
173 td
.setAttribute("class", "discarded");
176 tbody
.appendChild(tr
);
180 function loadPage(i
) {
182 frames
["content"].document
.location
= "base/" + pages
[i
] + "index.html";
185 function frameLoad() {
186 if (cycle
== NUM_CYCLES
) {
193 var tend
= new Date();
194 var href
= frames
["content"].document
.location
.href
;
195 if (href
== "about:blank")
197 var tdelta
= tend
- tstart
;
198 timeVals
[index
].push(tdelta
);
199 var fields
= href
.split('/');
201 var text
= (cycle
+ 1) + ', ' + (index
+ 1) + ', ' + fields
[fields
.length
- 2] + ", " + tdelta
;
203 var doc
= frames
["header"].document
;
205 while (body
.firstChild
)
206 body
.removeChild(body
.firstChild
);
207 body
.appendChild(doc
.createTextNode(text
));
209 if (++index
== NUM_PAGES
) {
211 if (++cycle
== NUM_CYCLES
) {
213 frames
["content"].document
.location
= "report.html";
218 window
.setTimeout("loadPage(" + index
+ ")", 500);
222 window
.resizeTo(800, 800);
223 window
.setTimeout("loadPage(" + index
+ ")", 500);
226 <frameset rows=
"40,*" onload=
"init()">
227 <frame name=
"header" src=
"header.html">
228 <frame name=
"content" src=
"" onload=
"frameLoad()">