Promises/A+ Comparisons (v43)

Revision 43 of this benchmark created on


Description

A comparison of Promises/A+ implementations in active development.

Preparation HTML

<script>
    var NativePromise = Promise;
</script>
<script src="http://rawgithub.com/dfilatov/vow/master/vow.min.js"></script>
<script src="http://rsvpjs-builds.s3.amazonaws.com/rsvp-latest.js"></script>
<script src="http://rawgithub.com/petkaantonov/bluebird/master/js/browser/bluebird.js"></script><script src="https://rawgithub.com/kriskowal/q/v0.9/q.js"></script><script src="https://rawgithub.com/juandopazo/ypromise/es6/promise.js?1"></script>
<script src="https://rawgithub.com/juandopazo/b08401358349c993d924/raw/90676e1116efe259eff4ae424a4914b445dcf6e1/gistfile1.js"></script>
<script src="https://raw.githubusercontent.com/douglascrockford/monad/master/vow.js"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
Bluebird deferred
// async test
function make() {
  var resolver = Promise.pending()

  resolver.fulfill()

  return resolver.promise
}

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

  defer.resolve()

  return defer.promise
}

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

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

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

  resolver.resolve()

  return resolver.promise
}

make().then(function() {
  deferred.resolve()
})
ready
Q classic
// async test
function make() {
  return Q(function(resolve, reject) {
    resolve()
  })
}

make().then(function() {
  deferred.resolve()
})
ready
ypromise
// async test
function make() {
  return new PromisePolyfill(function(resolve, reject) {
    resolve()
  })
}

make().then(function() {
  deferred.resolve()
})
ready
Native promise classic
// async test
function make() {
  return new NativePromise(function(resolve, reject) {
    resolve()
  })
}

make().then(function() {
  deferred.resolve()
})
ready
VOW
// async test
function make() {
  var vow = VOW.make();
  vow.keep();
  return vow.promise;
}

make().when(function() {
  deferred.resolve()
})
ready

Revisions

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