25

여러 애니메이션을 수행하는 경우 여러 requestAnimationFrame 콜백을 추가하는 것이 성능면에서 좋습니까? F.ex :여러 requestAnimationFrame 성능

function anim1() { 
    // animate element 1 
} 

function anim2() { 
    // animate element 2 
} 

function anim3() { 
    // animate element 3 
} 

requestAnimationFrame(anim1); 
requestAnimationFrame(anim2); 
requestAnimationFrame(anim3); 

또는 그것이 하나의 콜백 사용하는 것보다 더 나쁜 입증 :

(function anim() { 
    requestAnimationFrame(anim); 
    anim1(); 
    anim2(); 
    anim3(); 
}()); 

정말 무대 뒤에서 무슨 일이 일어나고 있는지 모르기 때문에 내가 부탁 해요을 requestAnimationFrame입니다 콜백을 여러 번 호출 할 때 콜백을 대기열에 넣으시겠습니까?

답변

4

requestAnimationFrame do call로 걸려 오는 전화는 requestAnimationFrame입니다. 따라서 단일 콜백 버전이 더 효율적입니다.

+8

이 문제가 확실합니까? http://www.w3.org/TR/animation-timing/#FrameRequestCallback에 따르면 콜백은 목록에 저장되고 순서대로 실행됩니다. 3 애니메이션을 사용하는 단일 콜백이 왜 애니메이션 1 콜백보다 3 콜백보다 효율적입니까? – David

+1

@David 2 개의 함수 호출을 적게한다는 간단한 사실. –

+3

@ErikSchierboom이 옳다면 함수 호출이 적을수록 스택에서 오버 헤드가 줄어들 것입니다. 그러나 코딩의 단순화를 위해 주 루프 외부에 살기가 거의 발생하지 않는 수명이 짧은 애니메이션의 경우 특히 그 응용 프로그램을 볼 수 있습니다. 또한 메인 루프의 "핫 루프"에서 분기를 제거하면 링크, 연결 해제, 원시 객체 생성 등으로 인한 JIT 컴파일러의 쓰러 뜨림을 줄일 수 있습니다. – mattdlockyer