Last active
September 9, 2015 10:51
-
-
Save AoJ/c1db54bd2772775a546e to your computer and use it in GitHub Desktop.
Simple perf test of loops
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
measure = (t, f) -> | |
s = new Date() | |
s = s.getTime() | |
ret = f() | |
e = new Date() | |
console.log t, e.getTime() - s, ret | |
test1 = -> | |
r = 0 | |
for x in a | |
r += x | |
return r | |
test2 = -> | |
r = 0 | |
l = a.length | |
while l | |
r += a[--l] | |
return r | |
console.log "data creation" | |
a = (Math.round((Math.random() - 0.5) * 100) for i in [1..1000000]) | |
console.log "test start" | |
measure "for(;;)", test1 | |
measure "while()", test2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Generated by CoffeeScript 1.9.3 | |
var a, i, measure, test1, test2; | |
measure = function(t, f) { | |
var e, ret, s; | |
s = new Date(); | |
s = s.getTime(); | |
ret = f(); | |
e = new Date(); | |
return console.log(t, e.getTime() - s, ret); | |
}; | |
test1 = function() { | |
var j, len, r, x; | |
r = 0; | |
for (j = 0, len = a.length; j < len; j++) { | |
x = a[j]; | |
r += x; | |
} | |
return r; | |
}; | |
test2 = function() { | |
var l, r; | |
r = 0; | |
l = a.length; | |
while (l) { | |
r += a[--l]; | |
} | |
return r; | |
}; | |
console.log("data creation"); | |
a = (function() { | |
var j, results; | |
results = []; | |
for (i = j = 1; j <= 1000000; i = ++j) { | |
results.push(Math.round((Math.random() - 0.5) * 100)); | |
} | |
return results; | |
})(); | |
console.log("test start"); | |
measure("for(;;)", test1); | |
measure("while()", test2); | |
// // // // // // // // // // // // // // // // // // // // // // // // | |
// Manually added | |
test3 = function() { | |
var r, x; | |
r = 0; | |
for(x of a) { | |
r += x; | |
} | |
return r; | |
} | |
test4 = function() { | |
var r, iterator; | |
r = 0; | |
iterator = a[Symbol.iterator]() | |
while(!(it = iterator.next()).done) { | |
r += it.value; | |
} | |
return r; | |
} | |
test4 = function() { | |
var r, iterator; | |
r = 0; | |
iterator = a[Symbol.iterator]() | |
while(!(it = iterator.next()).done) { | |
r += it.value; | |
} | |
return r; | |
} | |
measure("for of ", test3); | |
measure("iterator", test4); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment