2017-10-24 2 views
1

パフォーマンスへのバインドと関数へのバインディングがデータメンバへのバインディングの方が優れているかどうかを知りたかったですか?角度2のパフォーマンス:関数よりデータメンバにバインドするほうがよいですか?

以下のステートメントのどれがパフォーマンスが向上しますか?

1)isThisTrueこのcheckfTrueは()観察からイベントを受信したときに呼び出されるメソッド

checkIfTrue(data){ 
     this.isThisTrue = data; 
} 

を介して設定されている

<myComp *ngIf="isThisTrue"></mycomp> 

。 seeIfItHasBecomeTrueチェックがthis.isTrueが真となったか否かを確認する

又は

2)

<mycomp *ngIf="seeIfItHasBecomeTrue()"></mycomp> 

明らかにデータメンバーへのバインディングは高速にする必要がありますが、これが常に高速になるかどうかはわかりません。グレーの領域がある場合は?また、それが速ければいくらですか?

+0

をしてseeIfItHasBecomeTrueにはconsole.logを入れて - 私はそれが5〜30倍の間のどこかに呼び出されます疑う:updateRenderer機能の詳細については、

をお読みください。単純な関数であれば問題はありませんが、もっと複雑な場合は測定可能なものに変わる可能性があります。 –

+0

[私の回答](https://stackoverflow.com/a/46903095/2545680)について不明な点はありますか? –

+0

遅れてお詫び申し上げます。ご回答いただきありがとうございます。完全な質問で私を助けてください。私はそれがいつもより速く、どれくらい速いかを探していました。 – TypeScripter

答えて

1

あなたがアプローチ*ngIf="isThisTrue"を使用する場合、コンパイラは、次のupdateRenderer機能を生成します:あなたが第二のアプローチ*ngIf="seeIfItHasBecomeTrue()"を使用する場合、関数は次のようになります

function (_ck, _v) { 
    var _co = _v.component; 
    var currVal_1 = _co.isThisTrue; <--- simple member access 
    _ck(_v, 5, 0, currVal_1); 
} 

を:

function(_ck,_v) { 
    var _co = _v.component; 
    var currVal_1 = _co.seeIfItHasBecomeTrue(); <--- function call 
    _ck(_v,5,0,currVal_1); 
} 

そして、単純なメンバーアクセスよりもパフォーマンス重視です。トライ

関連する問題