Promise vs Callback (v15)

Revision 15 of this benchmark created by Yonathan Randolph on


Preparation HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/q.js/1.0.0/q.min.js"></script>

Setup

window.n = 1000;

Test runner

Ready to run.

Testing in
TestOps/sec
Callback
// async test
var d = deferred;

function getData(callback) {
  var i = 0;

  function doNextIteration() {
    i++;
    if (i == n) callback("data");
    else return doNextIteration();
  }
  doNextIteration();
}

getData(function(data) {
  setTimeout(function() {
    d.resolve();
  }, 0)
})
ready
Promise
// async test
var d = deferred;

function getData() {
  var i = 0;

  function doNextIteration() {
    i++;
    if (i === n) return "data";
    return new Promise(function(resolve, reject) {
      resolve();
    }).then(doNextIteration);
  }
  return doNextIteration();
}

getData().then(function(data) {
  setTimeout(function() {
    d.resolve();
  }, 0)
})
ready
Q
// async test
var d = deferred;

function getData() {
  var i = 0;

  function doNextIteration() {
    i++;
    if (i === n) return "data";
    var deferred = Q.defer();
    deferred.resolve();
    return deferred.promise.then(doNextIteration);
  }
  return doNextIteration();
}

getData().then(function(data) {
  setTimeout(function() {
    d.resolve();
  }, 0)
})
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.