2017-10-24 3 views
1

데이터 멤버에 대한 바인딩이 성능과 함수의 바인딩에서 더 나은지에 대한 아이디어가 있었습니까?각도 2 성능 : 함수가 아닌 데이터 멤버로 바인딩하는 것이 더 좋습니까?

아래의 진술 중 어느 것이 더 나은 성능을 가질 것인가?

1) isThisTrue이 checkfTrue()가 관찰에서 이벤트 수신에 호출되는 메소드

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

통해 설정되는

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

.

또는

2)

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

여기서 seeIfItHasBecomeTrue 검사 this.isTrue 해당 지거나하지 않았는지.

분명히 데이터 멤버 바인딩이 빨라야한다고 느낍니다. 그러나 이것이 항상 더 빠를 지 확실하지 않습니다. 또는 회색 영역이있는 경우? 또한, 그것이 더 빠를 경우 얼마나?

+0

시험 후 seeIfItHasBecomeTrue에 CONSOLE.LOG를 넣어 - 나는 그것이 5 개 30 번 사이 어딘가에서 호출됩니다 생각한다. 단순한 함수라면 중요하지 않지만 더 복잡한 경우 측정 가능한 것으로 바뀔 수 있습니다. –

+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); 
} 

그리고를 함수 호출은 단순한 멤버 액세스보다 성능이 훨씬 큽니다. 더에 대한 updateRenderer 기능을 알아 보려면

읽기 :

관련 문제