Promise vs Callback (v13)

Revision 13 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 = 10;

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 setTimeout(doNextIteration, 1);
  }
  doNextIteration();
}

getData(function(data) {
  d.resolve()
})
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) {
      setTimeout(resolve, 1);
    }).then(doNextIteration);
  }
  return doNextIteration();
}

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

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

getData().then(function(data) {
  d.resolve()
})
ready

Revisions

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