Bluebird vs RSVP vs When vs Native (v97)

Revision 97 of this benchmark created on


Description

A comparison of the two most highly performant promise implementations and the new native promises.

Preparation HTML

<script src="http://rsvpjs-builds.s3.amazonaws.com/rsvp-latest.js"></script>
<script src="//cdn.jsdelivr.net/bluebird/3.0.5/bluebird.js"></script>
<script>var BPromise = Promise.noConflict();
if ((Promise + "").indexOf("native") < 0) alert("not native promises");
</script>
<script src="https://www.dropbox.com/s/vsan9q5dmlk3odc/when-3.3.1.js?dl=1"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
Bluebird deferred
// async test
function make() {
  return new BPromise(function (resolve, reject) {
      resolve(1)
  })
}

make().then(function (v) { deferred.resolve()  })
ready
RSVP deferred
// async test
function make() {
  var defer = RSVP.defer()

    defer.resolve()

  return defer.promise
}

make().then(function () { deferred.resolve() })
ready
When deferred
// async test
function make() {
  var defer = when.defer()

    defer.resolve()

  return defer.promise
}

make().then(function () { deferred.resolve() })
ready
Bluebird classic
// async test
function make() {
  return new BPromise(function (resolve, reject) {
      resolve(1)
  })
}

make().then(function (v) { deferred.resolve()  })
ready
RSVP classic
// async test
function make() {
  return new RSVP.Promise(function (resolve, reject) {
      resolve(1)
  })
}

make().then(function (v) {deferred.resolve()  })
ready
When classic
// async test
function make() {
  return new when.Promise(function (resolve, reject) {
      resolve(1)
  })
}

make().then(function (v) {deferred.resolve()  })
ready
Native Promises
// async test
function make() {
  return new Promise(function (resolve, reject) {
      resolve(1)
  })
}

make().then(function (v) { deferred.resolve()  })
ready

Revisions

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