Less recursion because recursion is slow.

This commit is contained in:
Zixaphir 2014-01-09 11:19:04 -07:00
parent d2311ab805
commit 86c2b07626
3 changed files with 40 additions and 30 deletions

View File

@ -12564,23 +12564,27 @@
} }
}, },
callbackNodesDB: function(klass, nodes, cb) { callbackNodesDB: function(klass, nodes, cb) {
var callbacks, errors, i, len, softTask; var cbs, errors, fn, i, len, softTask;
errors = null; errors = null;
len = 0; len = 0;
i = 0; i = 0;
callbacks = klass.callbacks; cbs = klass.callbacks;
softTask = function() { fn = function() {
var node; var node;
node = nodes[i++]; node = nodes[i++];
callbacks.execute(node); cbs.execute(node);
if (len === i && cb) { return i % 7;
return cb(); };
} softTask = function() {
if (!(i % 7)) { while (fn()) {
return setTimeout(softTask, 0); if (len === i) {
} else { if (cb) {
return softTask(); cb();
}
return;
}
} }
return setTimeout(softTask, 0);
}; };
len = nodes.length; len = nodes.length;
return softTask(); return softTask();

View File

@ -12541,23 +12541,27 @@
} }
}, },
callbackNodesDB: function(klass, nodes, cb) { callbackNodesDB: function(klass, nodes, cb) {
var callbacks, errors, i, len, softTask; var cbs, errors, fn, i, len, softTask;
errors = null; errors = null;
len = 0; len = 0;
i = 0; i = 0;
callbacks = klass.callbacks; cbs = klass.callbacks;
softTask = function() { fn = function() {
var node; var node;
node = nodes[i++]; node = nodes[i++];
callbacks.execute(node); cbs.execute(node);
if (len === i && cb) { return i % 7;
return cb(); };
} softTask = function() {
if (!(i % 7)) { while (fn()) {
return setTimeout(softTask, 0); if (len === i) {
} else { if (cb) {
return softTask(); cb();
}
return;
}
} }
return setTimeout(softTask, 0);
}; };
len = nodes.length; len = nodes.length;
return softTask(); return softTask();

View File

@ -241,16 +241,18 @@ Main =
len = 0 len = 0
i = 0 i = 0
{callbacks} = klass cbs = klass.callbacks
fn = ->
node = nodes[i++]
cbs.execute node
i % 7
softTask = -> softTask = ->
node = nodes[i++] while fn()
callbacks.execute node if len is i
return cb() if len is i and cb cb() if cb
unless i % 7 return
setTimeout softTask, 0 setTimeout softTask, 0
else
softTask()
len = nodes.length len = nodes.length
softTask() softTask()