私はしばらくの間、ES6を実験していましたが、新しい矢印関数と比較してメソッド.bind(this)
のパフォーマンスに関する質問があります。Arrow関数はこのメソッドをバインドするよりも高速です
.bind(this)
を伝統的な関数に使用した場合、またはユーザーの矢印関数より優れている場合、パフォーマンスの改善があるかどうかを知りたいと思います。
私は以下のテストを行いましたが、テストを実行するたびに異なる値が得られる理由はわかりません。
申し訳function useBind() {
if(this && this.i) {
console.log(this.i);
}
}
const noBind =() => {
if(this && this.i) {
console.log(this.i);
}
}
function goFat() {
this.i = 10;
for (var i = 0; i < 100; i++) {
noBind();
}
}
function goTraditional() {
this.i = 20;
for (var i = 0; i < 100; i++) {
useBind.bind(this)();
}
}
function race() {
var start = performance.now();
goTraditional();
console.log('Traditional elapsed: ' + (performance.now() - start));
start = performance.now();
goFat()
console.log('Fat elapsed: ' + (performance.now() - start));
start = performance.now();
goTraditional();
console.log('Traditional elapsed: ' + (performance.now() - start));
start = performance.now();
goFat()
console.log('Fat elapsed: ' + (performance.now() - start));
start = performance.now();
goTraditional();
console.log('Traditional elapsed: ' + (performance.now() - start));
start = performance.now();
goFat()
console.log('Fat elapsed: ' + (performance.now() - start));
console.log('------');
}
この質問が重複または他の類似のトピックがありますが、私は今まで、具体的な答えを見つけることができている場合。
'useBind.bind(this); useBind(); ' - それはとにかく' bind'の仕方ではありません。 – Bergi
それはあなたが実行しようとしていることはパフォーマンス上重要なのですか? –
呼び出しのパフォーマンスや関数オブジェクトの作成のパフォーマンスについて気にしていますか? – Bergi