約束の速さを確認する

この記事では、私自身の制作のベンチマークの結果を非常に興味深い意見として投稿することにしました。 このベンチマークは、ネイティブおよびブルーバードの約束の速度を調べるために作成されました。



画像








ベンチマークのソースコード(オプション番号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ライブラリへのリンク



All Articles