Как найти UIImage Узкое место

У меня есть приложение, которое используетUIImage объекты. До этого момента я использовал объекты изображения, инициализированные с помощью чего-то вроде этого:

UIImage *image = [UIImage imageNamed:imageName];

используя изображение в моем приложении. Я добавил функциональность, чтобы пользователи могли использовать изображения с камеры или из своей библиотеки, используяUIImagePickerController, Эти изображения, очевидно, не могут быть в моем комплекте приложений, поэтому я инициализируюUIImage возразить по-другому:

UIImage *image = [UIImage imageWithContentsOfFile:pathToFile];

Это делается после первого изменения размера изображения до размера, аналогичного другим файлам в моем комплекте приложений, как в пиксельных измерениях, так и в общем количестве байтов, с использованием формата Jpeg (интересно, что PNG был намного медленнее, даже для файла того же размера). Другими словами, файл, на который указываетpathToFile это файл такого же размера, что и изображение в пакете (размеры в пикселях совпадают, сжатие выбрано, поэтому количество байтов было одинаковым).

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

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

Соответствующая часть кода, которая вызывает узкое место, такова:

[image drawInRect:self.imageSquare];

Здесь self является подклассом UIImageView. Его свойство imageSquare простоCGRect определяя, что будет нарисовано. Эта часть одинакова для обоих методов. Итак, почему второй метод намного медленнее с аналогичным размеромUIImage объект?

Есть ли что-то, что я мог бы сделать по-другому, чтобы оптимизировать этот процесс?

РЕДАКТИРОВАТЬ: я изменить доступ к изображению в комплекте наimageWithContentsOfFile и время выполнения цикла изменилось с примерно 4 секунд до чуть более минуты. Похоже, мне нужно найти способ сделать кешированиеimageNamed делает, но с не связанными файлами.

Ответы на вопрос(1)

Ваш ответ на вопрос