Skip to content

Instantly share code, notes, and snippets.

@AoJ
Last active September 9, 2015 10:51
Show Gist options
  • Save AoJ/c1db54bd2772775a546e to your computer and use it in GitHub Desktop.
Save AoJ/c1db54bd2772775a546e to your computer and use it in GitHub Desktop.
Simple perf test of loops
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
// 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