It occurs to me that Array.shift() is probably slow.

This commit is contained in:
Zixaphir 2014-01-07 14:23:27 -07:00
parent 31e409f361
commit 073887e515
3 changed files with 14 additions and 11 deletions

View File

@ -12578,18 +12578,19 @@
} }
}, },
callbackNodesDB: function(klass, nodes, cb) { callbackNodesDB: function(klass, nodes, cb) {
var callbacks, errors, len, softTask; var callbacks, errors, i, len, softTask;
errors = null; errors = null;
len = 0; len = 0;
i = 0;
callbacks = klass.callbacks; callbacks = klass.callbacks;
softTask = function() { softTask = function() {
var node; var node;
node = nodes.shift(); node = nodes[i++];
callbacks.execute(node); callbacks.execute(node);
if (!--len && cb) { if (len === i && cb) {
return cb(); return cb();
} }
if (!(len % 7)) { if (!(i % 7)) {
return setTimeout(softTask, 0); return setTimeout(softTask, 0);
} else { } else {
return softTask(); return softTask();

View File

@ -12552,18 +12552,19 @@
} }
}, },
callbackNodesDB: function(klass, nodes, cb) { callbackNodesDB: function(klass, nodes, cb) {
var callbacks, errors, len, softTask; var callbacks, errors, i, len, softTask;
errors = null; errors = null;
len = 0; len = 0;
i = 0;
callbacks = klass.callbacks; callbacks = klass.callbacks;
softTask = function() { softTask = function() {
var node; var node;
node = nodes.shift(); node = nodes[i++];
callbacks.execute(node); callbacks.execute(node);
if (!--len && cb) { if (len === i && cb) {
return cb(); return cb();
} }
if (!(len % 7)) { if (!(i % 7)) {
return setTimeout(softTask, 0); return setTimeout(softTask, 0);
} else { } else {
return softTask(); return softTask();

View File

@ -238,14 +238,15 @@ Main =
callbackNodesDB: (klass, nodes, cb) -> callbackNodesDB: (klass, nodes, cb) ->
errors = null errors = null
len = 0 len = 0
i = 0
{callbacks} = klass {callbacks} = klass
softTask = -> softTask = ->
node = nodes.shift() node = nodes[i++]
callbacks.execute node callbacks.execute node
return cb() if not --len and cb return cb() if len is i and cb
unless len % 7 unless i % 7
setTimeout softTask, 0 setTimeout softTask, 0
else else
softTask() softTask()