iOS Core-Animation: проблемы производительности с матрицами CATransaction / Interpolating transform - PullRequest
0 голосов
/ 15 февраля 2011

Я тестирую производительность моего приложения для iPhone:

// using CATransaction like this goes from 14fps to 19fps
[CATransaction begin];
[CATransaction setDisableActions: YES];

// NEG, as coord system is flipped/messed up
self.transform = CGAffineTransformMakeRotation(-thetaWheel);

[CATransaction commit];

Вопрос: почему отключение поведения по умолчанию основной анимации интерполяции между старой и новой матрицами преобразования дает такое повышение производительности?* Что они могли бы делать, что могло быть настолько вычислительно дорогим?Даже если они используют самую сложную в мире технику для интерполяции между двумя матрицами, я не могу поверить, что это составит 5 кадров в секунду?* M_last + (1.-k) * M_target

1 Ответ

0 голосов
/ 11 мая 2011

Интерполяция между двумя позициями создает CAAnimations, которые должны применяться для каждого кадра и синхронизироваться между потоком рендеринга и основным потоком.

Стоимость транзакции будет зависеть от того, сколько слоев вы анимируете одновременно; попробуйте профилировать ваше приложение, чтобы увидеть узкие места.

...