/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
License:
LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
Authors:
* Sebastian Werner (wpbasti)
* Andreas Ecker (ecker)
************************************************************************ */
/* ************************************************************************
#module(dev)
************************************************************************ */
qx.OO.defineClass("qx.dev.TimeTracker", qx.core.Object,
function()
{
qx.core.Object.call(this);
this._functions = qx.lang.Array.fromArguments(arguments);
this.buttonSets();
});
qx.dev.TimeTracker.compare = function(a, b) {
return a-b;
}
/*
---------------------------------------------------------------------------
METHODS
---------------------------------------------------------------------------
*/
qx.Proto.buttonSets = function()
{
var btnLayout = new qx.ui.layout.HorizontalBoxLayout;
btnLayout.setLocation(20, 48);
btnLayout.setSpacing(5);
var loopLabel = new qx.ui.basic.Atom("Method Loops: ");
loopLabel.setAllowStretchY(false);
loopLabel.setVerticalAlign("middle");
var loopInput = new qx.ui.form.TextField("100");
loopInput.setAllowStretchY(false);
loopInput.setWidth(50);
loopInput.setVerticalAlign("middle");
var repeatLabel = new qx.ui.basic.Atom("Repeat Number: ");
repeatLabel.setAllowStretchY(false);
repeatLabel.setVerticalAlign("middle");
repeatLabel.setMarginLeft(30);
var btnStart1 = new qx.ui.form.Button("Start 3x", "icon/16/button-ok.png");
var btnStart2 = new qx.ui.form.Button("Start 7x", "icon/16/button-ok.png");
var btnStart3 = new qx.ui.form.Button("Start 15x", "icon/16/button-ok.png");
var btnStart4 = new qx.ui.form.Button("Start 25x", "icon/16/button-ok.png");
btnStart1.addEventListener("execute", function() { this.start(3, parseInt(loopInput.getValue())); }, this);
btnStart2.addEventListener("execute", function() { this.start(7, parseInt(loopInput.getValue())); }, this);
btnStart3.addEventListener("execute", function() { this.start(15, parseInt(loopInput.getValue())); }, this);
btnStart4.addEventListener("execute", function() { this.start(25, parseInt(loopInput.getValue())); }, this);
var htmlOutput = this._output = new qx.ui.embed.HtmlEmbed();
htmlOutput.setHtml("");
htmlOutput.setLocation(20, 78);
htmlOutput.setRight(335);
htmlOutput.setBottom(48);
htmlOutput.setBorder("1px solid black");
htmlOutput.setBackgroundColor("white");
htmlOutput.setPadding(10);
htmlOutput.setOverflow("auto");
htmlOutput.addToDocument();
btnLayout.add(loopLabel, loopInput, repeatLabel, btnStart1, btnStart2, btnStart3, btnStart4);
btnLayout.addToDocument();
}
qx.Proto.start = function(vRounds, vLoops)
{
var vFuncs = this._functions;
var vLength = vFuncs.length;
var vStart;
var vLocalTimes;
var vAllTimes = [];
var vHtmlMeasured = [];
var vHtmlResults = [];
var vCellWidth = Math.round(100 / (vLength+1)) + "%";
vHtmlMeasured.push("
Measured Values
");
vHtmlMeasured.push("");
vHtmlMeasured.push("");
vHtmlMeasured.push("");
vHtmlMeasured.push(" | ");
for (var j=0; jMethod " + (j+1) + "");
}
vHtmlMeasured.push("
");
for (var i=0; iRound " + i + " | ");
for (var j=0; j" + vLocalTimes[j] + "");
}
vHtmlMeasured.push("");
vAllTimes.push(vLocalTimes);
}
vHtmlMeasured.push("
");
var vSum, vMeanValue, vMeanAll=[], vMeanMin=1e7, vMeanMax=0;
for (var j=0; jResults Summary");
vHtmlResults.push("");
vHtmlResults.push("");
vHtmlResults.push(" | ");
for (var j=0; jMethod " + (j+1) + "");
}
vHtmlResults.push("
");
vHtmlResults.push("");
vHtmlResults.push("Median | ");
for (var j=0; j" + vMedianAll[j] + "");
}
vHtmlResults.push("
");
vHtmlResults.push("");
vHtmlResults.push("Median Factor | ");
for (var j=0; j");
vHtmlResults.push(vMedianMin > 0 ? Math.round(vMedianAll[j] / vMedianMin) : "1");
vHtmlResults.push("x");
}
vHtmlResults.push("
");
vHtmlResults.push("");
vHtmlResults.push("Mean | ");
for (var j=0; j" + vMeanAll[j] + "");
}
vHtmlResults.push("
");
vHtmlResults.push("");
vHtmlResults.push("Mean Factor | ");
for (var j=0; j");
vHtmlResults.push(vMeanMin > 0 ? Math.round(vMeanAll[j] / vMeanMin) : 1);
vHtmlResults.push("x");
}
vHtmlResults.push("
");
vHtmlResults.push("");
vHtmlResults.push("Winner | ");
for (var j=0; j");
if (vMedianMin == vMedianAll[j] && vMeanMin == vMeanAll[j])
{
vHtmlResults.push("BOTH");
}
else if (vMedianMin == vMedianAll[j])
{
vHtmlResults.push("MEDIAN");
}
else if (vMeanMin == vMeanAll[j])
{
vHtmlResults.push("MEAN");
}
vHtmlResults.push("");
}
vHtmlResults.push("
");
vHtmlResults.push("
");
this._output.setHtml(vHtmlResults.join("") + vHtmlMeasured.join(""));
}
/*
---------------------------------------------------------------------------
DISPOSER
---------------------------------------------------------------------------
*/
qx.Proto.dispose = function()
{
if (this.getDisposed()) {
return;
}
this._functions = null;
return qx.core.Object.prototype.dispose.call(this);
}