summaryrefslogtreecommitdiff
path: root/includes/js/dojox/lang/tests/fun_perf.html
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/lang/tests/fun_perf.html')
-rw-r--r--includes/js/dojox/lang/tests/fun_perf.html176
1 files changed, 176 insertions, 0 deletions
diff --git a/includes/js/dojox/lang/tests/fun_perf.html b/includes/js/dojox/lang/tests/fun_perf.html
new file mode 100644
index 0000000..9d19a60
--- /dev/null
+++ b/includes/js/dojox/lang/tests/fun_perf.html
@@ -0,0 +1,176 @@
+<html>
+ <head>
+ <title>clocking fun</title>
+ <style type="text/css">
+ @import "../../../dojo/resources/dojo.css";
+ </style>
+ <script type="text/javascript" src="../../../dojo/dojo.js" djConfig="isDebug:true"></script>
+ <script type="text/javascript" src="../functional.js"></script>
+ <script type="text/javascript" src="../functional/sequence.js"></script>
+ <script type="text/javascript" src="../functional/fold.js"></script>
+ <script type="text/javascript">
+ dojo.addOnLoad(function(){
+ var LEN = 2000, ITER = 200, b, e, tests = {},
+ df = dojox.lang.functional,
+ sample = df.repeat(LEN, "+1", 0),
+ add = df.lambda("+"),
+ isOdd = df.lambda("%2");
+
+ var clock = function(body){
+ var b = new Date();
+ body();
+ var e = new Date();
+ return e.getTime() - b.getTime(); // in ms
+ };
+
+ var log = function(name, body){
+ b = new Date();
+ var ms = clock(body);
+ e = new Date();
+ console.log(name + ":", ms);
+ };
+
+ // filter
+ tests["raw filter"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ var t = [];
+ for(var j = 0; j < sample.length; ++j){
+ if(isOdd(sample[j])){ t.push(sample[j]); }
+ }
+ }
+ };
+ tests["dojo.filter"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ dojo.filter(sample, isOdd);
+ }
+ };
+ tests["df.filter"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ df.filter(sample, isOdd);
+ }
+ };
+ if(sample.filter){
+ tests["Array.prototype.filter"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ sample.filter(isOdd);
+ }
+ };
+ }
+
+ // map
+ tests["raw map"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ var t = [];
+ for(var j = 0; j < sample.length; ++j){
+ t.push(isOdd(sample[j]));
+ }
+ }
+ };
+ tests["dojo.map"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ dojo.map(sample, isOdd);
+ }
+ };
+ tests["df.map"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ df.map(sample, isOdd);
+ }
+ };
+ if(sample.map){
+ tests["Array.prototype.map"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ sample.map(isOdd);
+ }
+ };
+ }
+
+ // forEach
+ tests["raw forEach"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ for(var j = 0; j < sample.length; ++j){
+ isOdd(sample[j]);
+ }
+ }
+ };
+ tests["dojo.forEach"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ dojo.forEach(sample, isOdd);
+ }
+ };
+ tests["df.forEach"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ df.forEach(sample, isOdd);
+ }
+ };
+ if(sample.forEach){
+ tests["Array.prototype.forEach"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ sample.forEach(isOdd);
+ }
+ };
+ }
+
+ // reduce
+ tests["raw reduce"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ var z = 0;
+ for(var j = 0; j < sample.length; ++j){
+ z = add(z, sample[j]);
+ }
+ }
+ };
+ tests["df.reduce"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ df.reduce(sample, add, 0);
+ }
+ };
+ if(sample.reduce){
+ tests["Array.prototype.reduce"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ sample.reduce(add, 0);
+ }
+ };
+ }
+
+ // reduceRight
+ tests["raw reduceRight"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ var z = 0;
+ for(var j = sample.length - 1; j >= 0; --j){
+ z = add(z, sample[j]);
+ }
+ }
+ };
+ tests["df.reduceRight"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ df.reduceRight(sample, add, 0);
+ }
+ };
+ if(sample.reduceRight){
+ tests["Array.prototype.reduceRight"] = function(){
+ for(var i = 0; i < ITER; ++i){
+ sample.reduceRight(add, 0);
+ }
+ };
+ }
+
+ var keys = df.keys(tests), i = 0;
+
+ var doTest = function(){
+ log(keys[i], tests[keys[i]]);
+ ++i;
+ if(i < keys.length){
+ setTimeout(doTest, 1);
+ }else{
+ console.log("that's all");
+ }
+ };
+
+ setTimeout(doTest, 1);
+ });
+ </script>
+ </head>
+ <body>
+ <p>This test is meant to run with Firebug.</p>
+ </body>
+</html>