javascriptでのメソッド呼び出しのパフォーマンスの高い実行と実行時間の一貫性の間の最良の妥協点は何ですか?
私はまだjavascriptを学んでおり、ほとんどすべてにプロトタイプを使用します(つまり、ここではブレンダン・アイヒ)が、関数クロージャーからより良いパフォーマンスと一貫性を見つけていると思います(おそらく最適化しすぎていることはわかっています)。私がテストしてきた 1 つのプロトタイプ パターン:
function PrototypeA() {}
PrototypeA.prototype.a = 0;
PrototypeA.prototype.b = 0;
PrototypeA.prototype.someMath = function() {
this.a += 1;
this.b += 2;
};
var Test = new PrototypeA();
Test.someMath();
この (素晴らしい!)ベンチマーク クロージャーへの投稿を読んだ後に決定しました。私が向かっている現在の閉鎖パターン:
var SubModule = new((function() {
var a = 0;
var b = 0;
var someMath = function() {
a += 1;
b += 2;
};
return function() {
this.someMath = someMath
};
})())();
ベンチマークでコンストラクターを呼び出したり、さまざまなスコープ トラバーサル パスを引き起こす方法でメソッドを呼び出したりするなど、テスト セットアップのエラーが原因で、さまざまなパターンの多くのベンチマークが誤解を招くことがわかっています。メソッドの実行をテストしようとしています。
ローカルで多くのベンチマーク (多くの異なるパターンにわたる benchmark.js) の後、注目すべきパターンを提示しました。
私の調査結果は、適切に編成されたクロージャーは、他の多くのタイプのオブジェクトのように実行時間がずれていないことを裏付けているようです (私は「タイプ」という用語を大まかに使用しています)。ベンチマークまたはセットアップの数値またはエラーが原因で、完全に間違っている可能性があることを認識しています。
ご覧いただきありがとうございます。