Questa domanda si applica ancora: Perché l'ES6 nativo promette più lento e più memoria di bluebird? ?
Riguardo alle ultime versioni di Node.js ed EC7?
Questa domanda si applica ancora: Perché l'ES6 nativo promette più lento e più memoria di bluebird? ?
Riguardo alle ultime versioni di Node.js ed EC7?
Ho fatto alcuni test e sembra che a settembre 2016 Bluebird sia ancora molto più veloce.
Per i benchmark sul sito web Bluebird, vedi:
Ma è sempre meglio fare i tuoi test per il caso d'uso specifico di cui hai bisogno. Di seguito sono riportati i miei test per promesse molto profondamente annidate con un sacco di .then
e new Promise()
.
Ecco i miei test:
native.js
var P = Promise;
var p = P.resolve('done');
for (var i = 0; i < 1000000; i++) {
p = p.then(a => new P((res, rej) => res(a)));
}
p.then(console.log);
bluebird.js
var P = require('bluebird');
var p = P.resolve('done');
for (var i = 0; i < 1000000; i++) {
p = p.then(a => new P((res, rej) => res(a)));
}
p.then(console.log);
Sul nodo 5.12.0:
$ time node native.js
real 0m5.508s
user 0m5.040s
sys 0m0.385s
$ time node bluebird.js
real 0m0.968s
user 0m0.861s
sys 0m0.071s
Sul nodo 6.5.0:
$ time node native.js
real 0m7.609s
user 0m7.362s
sys 0m0.260s
$ time node bluebird.js
real 0m1.053s
user 0m1.033s
sys 0m0.053s
Sul nodo 5.12.0:
$ /usr/bin/time -v node native.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 886644
$ /usr/bin/time -v node bluebird.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 186940
Sul nodo 6.5.0:
$ /usr/bin/time -v node native.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 767832
$ /usr/bin/time -v node bluebird.js 2>&1 | grep Maximum
Maximum resident set size (kbytes): 187912
Sembra che le Promesse native stiano diventando più lente, semmai.
Leggi altre domande sui tag javascript promises node.js