Jeśli robię wiele animacji, czy jest w porządku pod względem wydajności, aby dodać wiele wywołań zwrotnych requestAnimationFrame
? F.ex:Wiele requestAnimationFrame wydajność
function anim1() {
// animate element 1
}
function anim2() {
// animate element 2
}
function anim3() {
// animate element 3
}
requestAnimationFrame(anim1);
requestAnimationFrame(anim2);
requestAnimationFrame(anim3);
Albo jest to udowodnione gorzej niż za pomocą jednego wywołania zwrotnego:
(function anim() {
requestAnimationFrame(anim);
anim1();
anim2();
anim3();
}());
Pytam, bo ja naprawdę nie wiem, co się dzieje za kulisami, to requestAnimationFrame
kolejkowanie wywołań zwrotnych, gdy wywołujesz go wiele razy?
Czy jesteś tego pewien? Zgodnie z http://www.w3.org/TR/animation-timing/#FrameRequestCallback, wywołania zwrotne są przechowywane na liście i wykonywane w kolejności. Dlaczego jedno wywołanie zwrotne z 3 animacjami byłoby bardziej wydajne niż 3 wywołania zwrotne z 1 animacją? – David
@David Za prosty fakt, że dwa wywołania funkcji są mniejsze. –
@ErikSchierboom ma rację, mniej wywołań funkcji będzie mniejszy narzut w stosie. Jednak widzę aplikację specjalnie dla krótkotrwałych animacji, które nierzadko wystrzelają poza główną pętlę, aby ułatwić kodowanie. Dodatkowo, usunięcie dowolnego rozgałęzienia z "gorącej pętli" w głównej pętli może zmniejszyć jakikolwiek kompilator JIT, powodując łączenie, rozłączanie, tworzenie natywnych obiektów itp. – mattdlockyer