nodejs v8/v7 のPromise とBluebird Promise を雑にベンチ比較した
既存の Bluebird Promise を利用しているコードから Bluebird を消すべきなのか悩むことがあって調べたところ、 ES6 の Promise は Bluebird の4倍遅いらしいと言う情報を見つけたのですが、 node.js v8.0 も出たことなので、ベンチを取りました。
ベンチマーク環境
マシンは Macbook Pro Retina 15 inch Late 2013 (2.3 GHz Intel Core i7) です。
雑ですが以下のコードでベンチマークを実施します。
各種 10 回ずつ実行し、最大と最小を除いた値で比較します。単位は ms。 以下のワンライナーでベンチを実行しました。(ワンライナーとは……)
結果
| 項目 | 最大値 | 最小値 | 平均値 | 中央値 | | -------------------- | ------ | ------ | ------- | ------ | | ES6 Promise(v7.10.0) | 5481 | 5354 | 5399.75 | 5394.5 | | ES6 Promise(v8.0.0) | 1619 | 1568 | 1591.12 | 1588.0 | | Bluebird(v7.10.0) | 898 | 836 | 862 | 353.5 | | Bluebird(v8.0.0) | 448 | 417 | 433.875 | 435.5 |
node v7 では v8 や bluebird と比べても極端に遅いことが分かります。それと比べると v8 ではだいぶ性能向上したと言えるでしょう。 とはいえ、どちらの場合においても Bluebird の方が性能が出ています。現状でも約 3.7 倍程度の性能差があるようです。
結論
node v8 の Promise よりも Bluebird Promise の方が速い
余談
tee って順序保障されないんですね