Last active
March 23, 2017 05:29
-
-
Save leizongmin/39a973f09057ad1849b48a7ba6d34cbe to your computer and use it in GitHub Desktop.
Test Node.js Promise
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ time node test-promise-2 | |
exec Promise.resolve() 100000 times | |
Node.js v4.8.1, native Promise | |
test: 496ms | |
0.58 real 0.50 user 0.08 sys | |
$ time node test-promise-2 bluebird | |
exec Promise.resolve() 100000 times | |
Node.js v4.8.1, bluebird Promise | |
test: 61ms | |
0.17 real 0.14 user 0.02 sys | |
$ time node test-promise-2 q | |
exec Promise.resolve() 100000 times | |
Node.js v4.8.1, q Promise | |
test: 2199ms | |
2.32 real 2.12 user 0.20 sys | |
------------------------------------------------ | |
$ time node test-promise-2 | |
exec Promise.resolve() 100000 times | |
Node.js v6.10.1, native Promise | |
test: 670.161ms | |
0.76 real 0.68 user 0.08 sys | |
$ time node test-promise-2 bluebird | |
exec Promise.resolve() 100000 times | |
Node.js v6.10.1, bluebird Promise | |
test: 70.248ms | |
0.18 real 0.16 user 0.02 sys | |
$ time node test-promise-2 q | |
exec Promise.resolve() 100000 times | |
Node.js v6.10.1, q Promise | |
test: 1761.544ms | |
1.89 real 1.71 user 0.19 sys | |
------------------------------------------------ | |
$ time node test-promise-2 | |
exec Promise.resolve() 100000 times | |
Node.js v7.7.4, native Promise | |
test: 208.804ms | |
0.28 real 0.23 user 0.05 sys | |
$ time node test-promise-2 bluebird | |
exec Promise.resolve() 100000 times | |
Node.js v7.7.4, bluebird Promise | |
test: 99.997ms | |
0.20 real 0.18 user 0.03 sys | |
$ time node test-promise-2 q | |
exec Promise.resolve() 100000 times | |
Node.js v7.7.4, q Promise | |
test: 1384.565ms | |
1.54 real 1.37 user 0.20 sys |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
let promiseModule = 'native'; | |
if (process.argv[2]) { | |
promiseModule = process.argv[2]; | |
global.Promise = require(promiseModule); | |
} | |
function test(n) { | |
return Promise.resolve(n + 1); | |
} | |
console.time('test'); | |
const times = 100000; | |
let p = test(1); | |
for (let i = 0; i < times; i++) { | |
p = p.then(test); | |
} | |
console.log('exec Promise.resolve() %s times', times); | |
console.log('Node.js %s, %s Promise', process.version, promiseModule); | |
p.then(n => { | |
console.timeEnd('test'); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ time node test-promise | |
exec Promise.reject() 100000 times | |
Node.js v4.8.1, native Promise | |
test: 1165ms | |
22.27 real 21.97 user 0.19 sys | |
$ time node test-promise bluebird | |
exec Promise.reject() 100000 times | |
Node.js v4.8.1, bluebird Promise | |
test: 726ms | |
0.84 real 0.79 user 0.05 sys | |
$ time node test-promise q | |
exec Promise.reject() 100000 times | |
Node.js v4.8.1, q Promise | |
test: 7770ms | |
7.96 real 7.61 user 0.34 sys | |
------------------------------------------------ | |
$ time node test-promise | |
exec Promise.reject() 100000 times | |
Node.js v6.10.1, native Promise | |
test: 1300.541ms | |
41.24 real 40.82 user 0.25 sys | |
$ time node test-promise bluebird | |
exec Promise.reject() 100000 times | |
Node.js v6.10.1, bluebird Promise | |
test: 725.487ms | |
0.85 real 0.79 user 0.06 sys | |
$ time node test-promise q | |
exec Promise.reject() 100000 times | |
Node.js v6.10.1, q Promise | |
test: 6823.676ms | |
6.99 real 6.79 user 0.28 sys | |
------------------------------------------------ | |
$ time node test-promise | |
exec Promise.reject() 100000 times | |
Node.js v7.7.4, native Promise | |
test: 764.782ms | |
49.57 real 49.10 user 0.28 sys | |
$ time node test-promise bluebird | |
exec Promise.reject() 100000 times | |
Node.js v7.7.4, bluebird Promise | |
test: 11907.472ms | |
12.08 real 12.07 user 0.34 sys | |
$ time node test-promise q | |
exec Promise.reject() 100000 times | |
Node.js v7.7.4, q Promise | |
test: 7168.753ms | |
7.36 real 7.14 user 0.43 sys |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
let promiseModule = 'native'; | |
if (process.argv[2]) { | |
promiseModule = process.argv[2]; | |
global.Promise = require(promiseModule); | |
} | |
function test() { | |
return Promise.reject(new Error('test')); | |
} | |
console.time('test'); | |
const times = 100000; | |
let p = test(); | |
for (let i = 0; i < times; i++) { | |
p = p.catch(test); | |
} | |
console.log('exec Promise.reject() %s times', times); | |
console.log('Node.js %s, %s Promise', process.version, promiseModule); | |
p.catch(err => { | |
console.timeEnd('test'); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment