Сколько стоит CGAffineTransformMakeRotation ()? - PullRequest
0 голосов
/ 12 мая 2009

Это очень дорогая функция, которая уносит мою работу под ногами? Я предполагаю, что они использовали это для покачивающихся кнопок на домашнем экране + основная анимация. Я просто хочу знать, прежде чем начать тратить свое время;)

Ответы [ 5 ]

3 голосов
/ 12 мая 2009

Очень (очень) мало. Это также то, что вы можете легко измерить сами; см. следующие URL-адреса для примеров / информации о реализации синхронизации с высоким разрешением:

3 голосов
/ 12 мая 2009

Кажется маловероятным, что это было бы большой проблемой производительности - это работает с чем-то вроде косинуса, синуса и нескольких умножений. Не звоните тысячи раз в секунду, и все будет в порядке.

1 голос
/ 12 мая 2009

Все, что делает CGAffineTransformMakeRotation () - это заполнение матрицы для обычного старого CGAffineTransform. Если вы думаете, что можете быстрее заполнить (или предварительно заполнить) матрицу, то сделайте это (я был бы очень удивлен, если бы она не была уже сверхоптимизирована).

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

Если вы действительно беспокоитесь об этом, то выполните преобразования в 2D-пространстве поверх OpenGL, чтобы убедиться в его аппаратной оптимизации.

1 голос
/ 12 мая 2009

Как и все, это зависит от того, как и сколько вы его используете. Он все время используется в разработке игр, для которых iPhone очень хорошо подходит. CoreAnimation также очень быстро. Если вы беспокоитесь об этом, я предлагаю взять одно из предоставленных Apple образцов приложений и запустить его с помощью Инструментов, чтобы предварительно настроить некоторые из ваших собственных эталонных тестов, чтобы убедиться, что они подходят для ваших нужд.

0 голосов
/ 12 мая 2009

Я просто хочу знать, прежде чем начать тратить свое время

Оптимизируйте систему, а не отдельные линии. Кто знает, сколько раз ваш код будет вызывать преобразование. Лучше заставить всю систему работать, профилировать ее, а затем оптимизировать слишком медленные части.

Не беспокойтесь об отдельных звонках, которые люди говорят вам, что они медленные. Используйте эту информацию в качестве указателя, если ваш код работает медленно, но всегда смотрите, как работает ваш код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...