
ベンチマークのソースコード(オプション番号1):
var Promise = require('bluebird'); // . var crypto = require('crypto'); var iterations = 1000000; var start = Date.now(); var arrayPromises = []; var promiseWrap = function () { return new Promise(function (resolve, reject) { crypto.randomBytes(256, (err, buf) => { if (err) reject(err); resolve(buf); }); }); }; for(var i = 0; i < iterations; i++){ arrayPromises.push(promiseWrap()); } if(arrayPromises.length === iterations){ Promise.all(arrayPromises).then(function (result) { var finish = Date.now()-start; console.log(" !"); console.log(" "+finish/1000+" ."); }); }
ベンチマークのソースコード(オプション番号2):
var Promise = require('bluebird'); // . var crypto = require('crypto'); var iterations = 1000000; var start = Date.now(); var arrayPromises = []; var promiseWrap = function () { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(Math.random(1)); },0) }); }; for(var i = 0; i < iterations; i++){ arrayPromises.push(promiseWrap()); } if(arrayPromises.length === iterations){ Promise.all(arrayPromises).then(function (result) { var finish = Date.now()-start; console.log(" !"); console.log(" "+finish/1000+" ."); }); }
結果として、このベンチマークには、すべての約束が解決される時間が表示されます。 私のマシンでのベンチマーク結果:
リードタイム:
ネイティブプロミス(オプション#1ノードv6.4.0)-19.808秒
Bluebird Promises(オプション#1ノードv6.4.0)-9.654秒
ネイティブプロミス(オプション#1ノードv6.5.0)-19.957秒
Bluebird Promises(オプション#1ノードv6.5.0)-9.723秒
ネイティブプロミス(オプションNo. 2ノードv6.5.0)-10.61秒
Bluebird Promises(オプション#2ノードv6.5.0)-2.208秒
最大割り当てメモリ(rss):
ネイティブプロミス(オプションNo. 2ノードv6.5.0)-1282 Mb。
Bluebird Promises(オプション#2ノードv6.5.0)-601 Mb。
平均割り当てメモリ(rss):
ネイティブプロミス(オプションNo. 2ノードv6.5.0)-368 Mb。
Bluebird Promises(オプション#2ノードv6.5.0)-297 Mb。
結論: bluebirdのpromiseは、ネイティブのpromiseよりも2〜5倍高速であり、必要なRAMもはるかに少なくなります。
私が何かを間違えた場合、コメントで報告するための大きな要求。 私はあなたから修正を聞いて非常にうれしいです。
» bluebirdライブラリへのリンク