この質問はまだ当てはまりますか なぜネイティブES6はブルーバードよりも低速でメモリ消費量が多い約束ですか? ?
Node.jsとEC7の最新バージョンについて
私はいくつかのテストを行いましたが、2016年9月の時点でBluebirdはまだはるかに高速であるようです。
Bluebird Webサイトのベンチマークについては、以下を参照してください。
ただし、必要な特定のユースケースに対して独自のテストを行うことが常に最善です。以下は、多数の_.then
_およびnew Promise()
を使用した、非常に深くネストされたpromiseに対する私の独自のテストです。
これが私のテストです:
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);
_
Node 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
_
Node 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
_
Node 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
_
Node 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
_
どちらかと言えば、ネイティブのプロミスが遅くなっているようです。