оптимизировать некоторый код CG, сгенерированный прозрачностью likethought? - PullRequest
0 голосов
/ 24 февраля 2012

как я могу написать этот фрагмент кода ios, чтобы у него не было sqrt и, что еще лучше, никаких * и / или?(это из кода, сгенерированного непрозрачностью likethought) (или это даже необходимо для оптимизации этого типа здесь? Я просто боюсь, что этот код будет вызываться много раз, так как каждый кадр будет содержать много спрайтов, и это будет происходить каждыйкогда нарисован какой-либо из этих фреймов, как он написан прямо сейчас ..)

...
    CGRect imageBounds = CGRectMake(0.0f, 0.0f, kmy_exampleWidth, kmy_exampleHeight);
    CGRect bounds = [self bounds];
    transform = CGContextGetUserSpaceToDeviceSpaceTransform(context);
...

    resolution = sqrtf(fabsf(transform.a * transform.d - transform.b * transform.c)) * 0.5f * (bounds.size.width / imageBounds.size.width + bounds.size.height / imageBounds.size.height);

1 Ответ

1 голос
/ 24 февраля 2012

Я серьезно сомневаюсь, что это будет проблемой. Продолжайте, чтобы ваш код работал правильно, а затем, если у вас проблемы с производительностью, используйте Instruments , чтобы найти узкое место. Если выполнение этих функций занимает много времени, посмотрите, вычисляют ли они значения каждого кадра, которые всегда одинаковы, и кэшируйте их вместо их переоценки. (Взглянув на приведенный выше код, я предполагаю, что матрица преобразования всегда будет одинаковой [и вычисление детерминанта sqrtf (fabs (ta * td-tb * tc)) будет равно 1 или 2, в зависимости от того, отображение сетчатки или нет], и если imageBounds и границы вида не меняются, разрешение не изменится. Но, не видя, в каком контексте находится этот код, это только предположение.)

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