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) {
var callbacks, errors, i, len, softTask;
var cbs, errors, fn, i, len, softTask;
errors = null;
len = 0;
i = 0;
callbacks = klass.callbacks;
softTask = function() {
cbs = klass.callbacks;
fn = function() {
var node;
node = nodes[i++];
callbacks.execute(node);
if (len === i && cb) {
return cb();
}
if (!(i % 7)) {
return setTimeout(softTask, 0);
} else {
return softTask();
cbs.execute(node);
return i % 7;
};
softTask = function() {
while (fn()) {
if (len === i) {
if (cb) {
cb();
}
return;
}
}
return setTimeout(softTask, 0);
};
len = nodes.length;
return softTask();

View File

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

View File

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