Нет хитрой хитрости, чтобы устройство работало, но есть несколько способов ускорить задачу или минимизировать влияние на пользовательский интерфейс.
Сначала рассмотрим необходимость ускорения этой задачи.Простая итерация по этому байтовому массиву может пройти достаточно быстро.Возможно, нет необходимости вкладывать средства в оптимизацию этой задачи, если приложение просто вычисляет это один раз за прогон или в ответ на выбор пользователя, который занимает по крайней мере несколько секунд между вариантами выбора.
Если ограничивающий прямоугольник нетребуется некоторое время после того, как изображение становится доступным, эта итерация может быть запущена в отдельном потоке.Таким образом, расчет не блокирует основной поток интерфейса.Grand Central Dispatch может упростить использование отдельного потока для этой задачи.
Если задача должна быть ускорена, возможно, это обработка видеоизображений в реальном времени, тогда параллельная обработка данных может помочь.Платформа Accelerate может помочь в настройке SIMD-расчетов для данных.Или, чтобы действительно добиться производительности с помощью этой итерации, код на языке ассемблера ARM, использующий операции NEON SIMD, может получить отличные результаты при значительных усилиях по разработке.
Последний вариант - изучить лучший алгоритм.Существует огромная работа по обнаружению особенностей в изображениях.Алгоритм обнаружения края может быть быстрее, чем простая итерация по байтовому массиву.Возможно, в будущем Apple добавит в Core Graphics возможности обнаружения краев, которые могут быть применены в этом случае.Внедренная Apple возможность обработки изображений может не совсем соответствовать этому случаю, но реализация Apple должна быть оптимизирована для использования возможностей SIMD или GPU iPad, что приведет к повышению общей производительности.