123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">
- <html>
- <head>
- <title>Dojo interactive benchmark tool</title>
- <script type="text/javascript" src="../../dojo/dojo.js"></script>
- <script type="text/javascript">
- // FIXME:
- // the url below points to dojo.inpdx.net/benchResults.php
- // need to setup DB on dtk.org and change URL here to store
- // results elsewhere ... work db structure in accompanying
- // .php file
- // basic stats are located at http://dojo.inpdx.net/benchmarks.html
-
- dojo.require("dojo.fx");
- // FIXME: this seems an excessive fix for IE6 issue ...
- dojo.require("dijit.dijit");
- // dojo.require("dijit.form.Button");
- dojo.require("dijit.dijit-all");
- dojo.require("dojo.parser");
-
- // setup global variables
- var masterResults = { clientNavigator: navigator.userAgent, dataSet: [], errors: [] }
- var isRunning = false;
- var theCount, theClass, runner = null;
- var testCount = 0;
- dojo.addOnLoad(function(){
- theCount = dojo.byId('countNode');
- theClass = dojo.byId('classNode');
- runner = dojo.byId('runner');
- masterResults.dojoVersion = dojo.version.toString();
- });
-
- function _toggleRunMsg(){
- var newMsg = (isRunning) ? " Run Test " : " Running ..."
- dojo.fx.chain([
- dojo.fadeOut({
- node:runner,
- duration:200,
- onEnd: function(){
- runner.innerHTML = newMsg;
- isRunning=!isRunning;
- }
- }),
- dojo.fadeIn({ node:runner, duration: 200 })
- ]).play();
- }
- function runTest(){
- if(isRunning){ return; }
- _toggleRunMsg();
- setTimeout("_runRealTest()",1000);
- }
- function _runRealTest(){
- var _error = false;
- var count = theCount.value;
- var aclass = theClass.value.toString();
- var theMethod = (dojo.byId('parse').checked) ? "parse" : "create";
- var tmpNode = document.createElement('div');
- switch(theMethod){
- case "parse" :
- var tmpString = [];
- for(var i=0; i<count; i++){
- tmpString.push('<div dojoType="', aclass, '"></div>');
- }
- tmpNode.innerHTML = tmpString.join("");
- var tmpTimer = new Date().getTime();
- dojo.parser.parse(tmpNode);
- var endTime = new Date().getTime() - tmpTimer;
- break;
- case "create" :
- var construction = dojo.getObject(aclass);
- var tmpTimer = new Date().getTime();
- for(var i=0; i<count; i++){
- var tmp = new construction({});
- tmpNode.appendChild(tmp.domNode);
- }
- var endTime = new Date().getTime() - tmpTimer;
- break;
- }
- var average = (endTime / count);
- var msg = "It took: "+endTime+"ms to "+theMethod+" "+count+" "+aclass+" widgets"+
- "<br>(average: "+average+" ms/widget)<br><br>";
- masterResults.dataSet.push({
- testNum: ++testCount,
- dijit: aclass,
- testCount: count,
- testAverage: average,
- testMethod: theMethod,
- testTime: endTime
- });
- dojo.byId("results").innerHTML += msg;
- setTimeout("_toggleRunMsg()",250);
-
- // Nodes have to be in the document for IE7 to GC them.
- // Do this after generating the widgets to dispel
- // notion that widget parents have to be in document
- // a-priori.
- dojo.byId("limbo").appendChild(tmpNode);
- }
- function doDebug(){
- var key = escape(dojo.toJson(masterResults));
- dojo.byId('hiddenHolder').value = key;
- return true;
- }
- </script>
- <style>
- @import "../../dijit/themes/tundra/tundra.css";
- @import "../../dijit/themes/dijit.css";
- @import "../../dojo/resources/dojo.css";
- @import "../../dijit/tests/css/dijitTests.css";
- #limbo {
- display: none;
- }
- #theContainer {
- float:left;
- display: block; padding:12px; padding-top:0;
- width:420px; margin-left:20px;
- background-color:#fff; -moz-border-radius:8pt 8pt;
- border:2px solid #ededed;
- }
- #leftControl { float:left; width:300px; }
- #testControl, #submitControl { border:2px solid #ededed; padding:12px; -moz-border-radius:8pt 8pt; background-color:#fff; }
- #results { overflow:auto; height:300px; border:1px solid #ccc; color:darkred; padding:8px; }
- #results li { list-style-type: none; }
- #results ul { margin:0; padding:0; }
- .runHolder, .submitButton {
- border:1px solid #ccc; padding:3px; -moz-border-radius:8pt 8pt; text-align:center;
- cursor:pointer; background-color:#ededed; display:block; width:125px;
- }
- </style>
- </head>
- <body class="tundra">
- <div id="limbo"></div>
- <h1 class="testTitle">Dojo Benchmark Tool</h1>
- <div id="leftControl">
- <div id="testControl">
- Class: <input type="text" name="dijit" id="classNode" value="dijit.form.Button"><br><br>
- Count: <input type="text" name="count" id="countNode" value="100" size="4" ><br><br>
-
- Method: <label for="parse">
- <input type="radio" name="theMethod" value="parse" id="parse" checked="on"> Parse
- </label>
- <label for="create">
- <input type="radio" name="theMethod" value="create" id="create"> Create
- </label>
- <br><br>
- <span onclick="runTest()" class="runHolder"><span id="runner"> Run Test </span></span>
- </div>
-
- <br>
- <div id="submitControl">
- <p>
- * The results of these tests are important to us. Please feel free to submit your dataSet
- to Dojotoolkit.org. Your privacy will be respected.
-
- </p>
- <div id="hiddenResults">
- <form id="resultForm" action="http://dojo.inpdx.net/benchResults.php"
- method="POST" onsubmit="doDebug()">
- <input type="hidden" id="hiddenHolder" value="" name="key">
- <input type="submit" value=" Submit Data " class="submitButton">
- </form>
- </div>
- </div>
- </div>
- <div id="theContainer"><h3>Results:</h3><div id="results"></div></div>
-
- </body>
- </html>
|