New file |
0,0 → 1,102 |
/* |
Copyright (c) 2004-2006, The Dojo Foundation |
All Rights Reserved. |
|
Licensed under the Academic Free License version 2.1 or above OR the |
modified BSD license. For more information on Dojo licensing, see: |
|
http://dojotoolkit.org/community/licensing.shtml |
*/ |
|
dojo.provide("dojo.profile"); |
dojo.profile = {_profiles:{}, _pns:[], start:function (name) { |
if (!this._profiles[name]) { |
this._profiles[name] = {iters:0, total:0}; |
this._pns[this._pns.length] = name; |
} else { |
if (this._profiles[name]["start"]) { |
this.end(name); |
} |
} |
this._profiles[name].end = null; |
this._profiles[name].start = new Date(); |
}, end:function (name) { |
var ed = new Date(); |
if ((this._profiles[name]) && (this._profiles[name]["start"])) { |
with (this._profiles[name]) { |
end = ed; |
total += (end - start); |
start = null; |
iters++; |
} |
} else { |
return true; |
} |
}, dump:function (appendToDoc) { |
var tbl = document.createElement("table"); |
with (tbl.style) { |
border = "1px solid black"; |
borderCollapse = "collapse"; |
} |
var hdr = tbl.createTHead(); |
var hdrtr = hdr.insertRow(0); |
var cols = ["Identifier", "Calls", "Total", "Avg"]; |
for (var x = 0; x < cols.length; x++) { |
var ntd = hdrtr.insertCell(x); |
with (ntd.style) { |
backgroundColor = "#225d94"; |
color = "white"; |
borderBottom = "1px solid black"; |
borderRight = "1px solid black"; |
fontFamily = "tahoma"; |
fontWeight = "bolder"; |
paddingLeft = paddingRight = "5px"; |
} |
ntd.appendChild(document.createTextNode(cols[x])); |
} |
for (var x = 0; x < this._pns.length; x++) { |
var prf = this._profiles[this._pns[x]]; |
this.end(this._pns[x]); |
if (prf.iters > 0) { |
var bdytr = tbl.insertRow(true); |
var vals = [this._pns[x], prf.iters, prf.total, parseInt(prf.total / prf.iters)]; |
for (var y = 0; y < vals.length; y++) { |
var cc = bdytr.insertCell(y); |
cc.appendChild(document.createTextNode(vals[y])); |
with (cc.style) { |
borderBottom = "1px solid gray"; |
paddingLeft = paddingRight = "5px"; |
if (x % 2) { |
backgroundColor = "#e1f1ff"; |
} |
if (y > 0) { |
textAlign = "right"; |
borderRight = "1px solid gray"; |
} else { |
borderRight = "1px solid black"; |
} |
} |
} |
} |
} |
if (appendToDoc) { |
var ne = document.createElement("div"); |
ne.id = "profileOutputTable"; |
with (ne.style) { |
fontFamily = "Courier New, monospace"; |
fontSize = "12px"; |
lineHeight = "16px"; |
borderTop = "1px solid black"; |
padding = "10px"; |
} |
if (document.getElementById("profileOutputTable")) { |
dojo.body().replaceChild(ne, document.getElementById("profileOutputTable")); |
} else { |
dojo.body().appendChild(ne); |
} |
ne.appendChild(tbl); |
} |
return tbl; |
}}; |
dojo.profile.stop = dojo.profile.end; |
|