約束の速さを確認する

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

画像


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

Source: https://habr.com/ru/post/J308944/


All Articles