diff options
Diffstat (limited to 'includes/js/dojox/string/tests/PerfFun.html')
-rw-r--r-- | includes/js/dojox/string/tests/PerfFun.html | 260 |
1 files changed, 0 insertions, 260 deletions
diff --git a/includes/js/dojox/string/tests/PerfFun.html b/includes/js/dojox/string/tests/PerfFun.html deleted file mode 100644 index a1dd968..0000000 --- a/includes/js/dojox/string/tests/PerfFun.html +++ /dev/null @@ -1,260 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd"> -<html> - <head> - <title>Perf Tests</title> - <script type="text/javascript" src="../../../dojo/dojo.js" djConfig="isDebug:true"></script> - <script type="text/javascript" src="lipsum.js"></script> - <script type="text/javascript"> - dojo.addOnLoad(function(){ - dojo.byId("run").disabled=""; - dojo.connect(dojo.byId("run"), - "onclick", - function(evt) { - setTimeout(function() { - var words = parseInt(dojo.byId("numWords").value) || 10; - var iters = parseInt(dojo.byId("numIters").value) || 1000; - buildAndRunSet(words, iters); - }, 0); - }); - }); - - function element(tag, textOrChild) { - var e = document.createElement(tag); - if(dojo.isArray(textOrChild)) dojo.forEach(textOrChild, function(c) { e.appendChild(c); }); - if(dojo.isString(textOrChild)) e.appendChild(document.createTextNode(textOrChild)); - else e.appendChild(textOrChild); - return e; - } - - function log(t) { - dojo.byId("mess").innerHTML = t; - } - - function reportRun(results){ - var runs = results.runs - var report = element("dl", - element("dt", - "Run with " + results.words + " words, " + - results.iterations + " iterations and overhead of " + - results.overhead)); - - runs.sort(function(a,b) { return a.time - b.time; }); - dojo.forEach(runs, function(r) { - report.appendChild(element("dd", r.time + " - " + r.name)); - }); - - dojo.body().appendChild(report); - } - - function runTest(test, iterations, expected) { - var i; - if(expected != test()) throw new Error("Test failed expecting " + expected + ", got " + test()); - var start = new Date().getTime(), end; - for(i=0; i < iterations; i++){ - test(); - } - end = new Date().getTime(); - return end-start; - } - - function runSet(set, iterations){ - - var tests = set.tests.concat(); //copy tests - var resultSet = {}; - resultSet.words = set.words.length; - resultSet.overhead = runTest(function(){}, iterations); - resultSet.iterations = iterations; - var runs = []; - - function _run() { - var t = tests.pop(); - try { - log("Running " + t.name); - if(t) runs.push({ name: t.name, time: runTest(t.test, iterations, set.expected)}); - } catch(e) { - console.error("Error running " + t.name); - console.error(e); - } - if(tests.length > 0) { - setTimeout(_run, 0); - } - else { - log("Done!"); - resultSet.runs = runs; - reportRun(resultSet); - } - } - setTimeout(_run, 0); - } - - function buildTestSet(numWords) { - var words = [], i, wordsInLipsum = lipsum.length; - for(i = numWords; i > 0; i-=wordsInLipsum) { - if(i >= wordsInLipsum) { words = words.concat(lipsum); } - else { words = words.concat(lipsum.slice(-i)); } - } - if(words.length != numWords) throw new Error("wrong number of words, got " + words.length + ", expected " + numWords); - - var expected = words.join(""); - - //console.log(words); - - return { - tests: [ - { - name: "dojoForEach", - test: function() { - var s = ""; - dojo.forEach(words, function(w) { s+=w; }); - return s; - } - }, - { - name: "nativeForEach", - test: function() { - var s = ""; - words.forEach(function(w) { s += w; }); - return s; - } - }, - { - name: "forLoop", - test: function() { - var s="",w=words; l=w.length; - for(var i = 0; i < l; i++) { - s += w[i]; - } - return s; - } - }, - { - name: "forLoopCallingInlineFunction", - test: function() { - var s="",w=words; l=w.length; - function fn(w) { s += w; }; - for(var i = 0; i < l; i++) { - fn(w[i]); - } - return s; - } - }, - { - name: "forLoopCallingExternalFunction", - test: function() { - g_s="",w=words; l=w.length; - for(var i = 0; i < l; i++) { - externalAppend(w[i]); - } - return g_s; - } - }, - { - name: "forLoopWithInCheck", - test: function() { - var s="",w=words; l=w.length; - for(var i = 0; i < l; i++) { - if(i in w) s += w[i]; - } - return s; - } - }, - { - name: "emptyFor", - test: function() { - var w = words; l = w.length; - for(var i = 0; i < l; i++) empty(w[i]); - return expected; - } - }, - { - name: "emptyForEach", - test: function() { - dojo.forEach(words, empty); - return expected; - } - } , - { - name: "identFor", - test: function() { - var w = words; l = w.length; - for(var i = 0; i < l; i++) ident(w[i]); - return expected; - } - }, - { - name: "identForEach", - test: function() { - dojo.forEach(words, ident); - return expected; - } - }, - { - name: "addUsingFor", - test: function() { - var x=0; - for(var i=0;i<1000;i++){x=x+a[i];} - return expected; // fake - } - }, - { - name: "addUsingForEach", - test: function() { - var x=0; - dojo.forEach(a, function(v,i){x=x+a[i];}); - return expected; // fake - } - } - ], - words: words, - expected: expected - }; - } - - function buildAndRunSet(words, times) { - runSet(buildTestSet(words), times); - } - - function ident(w) { return w; } - function empty() { } - - var g_s = ""; - function externalAppend(w){ g_s += w; } - - var a = new Array(1000); - for(var i=0; i<1000;i++){a[i]=i;} - - </script> - <style type="text/css"> - html { - font-family: Lucida Grande, Tahoma; - } - div { margin-bottom: 1em; } - #results { - border: 1px solid #999; - border-collapse: collapse; - } - #results caption { - font-size: medium; - font-weight: bold; - } - #results td, #results th { - text-align: right; - width: 10em; - font-size: small; - white-space: nowrap; - } - #wordsCol { background: yellow; } - td.max { color: red; font-weight: bold; } - td.min { color: green; font-weight: bold; } - </style> - </head> - <body> - <table> - <tr><td><label for="numWords">Words</label></td><td><input type="text" id="numWords" value="100"/></td></tr> - <tr><td><label for="numIters">Iterations</label></td><td><input type="text" id="numIters" value="1000"/></td></tr> - <tr><td></td><td><button id="run" disabled>Run Tests!</button></td></tr> - </table> - <div id="mess"></div> - </body> -</html> |