Теперь, когда Core Image уже давно работает на iOS, мы можем поговорить о некоторых жестких показателях производительности. Я создал эталонное приложение в рамках тестирования моей платформы GPUImage и профилировал производительность необработанных фильтров на основе ЦП, фильтров Core Image и фильтров GPUImage с помощью видеопотоков в реальном времени. Ниже приведены значения времени (в миллисекундах), в течение которых каждый из них применял один гамма-фильтр к видеокадру 640x480 с камеры iPhone (для двух разных моделей оборудования, работающих под управлением двух разных версий ОС):
iPhone 4 (iOS 5) | iPhone 4S (iOS 6)
------------------------------------------------
CPU 458 ms (2.2 FPS) 183 ms (5.5 FPS)
Core Image 106 ms (6.7 FPS) 8.2 ms (122 FPS)
GPUImage 2.5 ms (400 FPS) 1.8 ms (555 FPS)
Для Core Image это означает максимум 9,4 FPS для простого гамма-фильтра на iPhone 4, но более 60 FPS для того же на iPhone 4S. Речь идет о простейшем случае фильтра Core Image, который вы можете настроить, поэтому производительность, безусловно, будет зависеть от более сложных операций. Это может указывать на то, что Core Image не может выполнять живую обработку достаточно быстро, чтобы соответствовать частоте камеры iPhone на iPhone 4 под управлением iOS 5, но с iOS 6 она обрабатывает видео более чем достаточно быстро, чтобы выполнять живую фильтрацию на iPhone 4S и выше. .
Источник этих тестов можно найти в моем репозитории GitHub ), если вы хотите узнать, откуда я взял эти цифры.
Я обновил этот ответ из своего оригинала, который слишком критично относился к производительности Core Image. Фильтр тонов сепии, который я использовал в качестве основы для сравнения, не выполнял ту же операцию, что и мой, поэтому это был плохой тест. Производительность фильтров Core Image также значительно улучшилась в iOS 6, что позволило сделать их более чем достаточно быстрыми для обработки живого видео на iPhone 4S и выше. Кроме того, с тех пор я обнаружил несколько случаев , таких как размытие большого радиуса , когда Core Image значительно превосходит мою платформу GPUImage.
Предыдущий ответ для потомков:
Как и для любого вопроса, связанного с производительностью, ответ будет зависеть от сложности ваших фильтров, размера фильтруемого изображения и характеристик производительности устройства, на котором вы работаете.
Поскольку Core Image уже некоторое время доступен на Mac, я могу указать на Руководство по программированию Core Image в качестве ресурса для изучения инфраструктуры. Я не могу комментировать специфичные для iOS элементы, учитывая NDA, но я настоятельно рекомендую посмотреть видео для WWDC 2011 Сессия 422. Использование Core Image в iOS и Mac OS X.
Core Image (в основном) использует графический процессор для обработки изображений, поэтому вы можете посмотреть, как быстро шейдеры OpenGL ES 2.0 обрабатывают изображения на существующих устройствах. Недавно я проделал определенную работу в этой области и обнаружил, что iPhone 4 может выполнять обработку 60 кадров в секунду с помощью простого шейдера для видео в реальном времени, передаваемого с разрешением 480 x 320. Вы можете загрузить мой пример приложения и попытайтесь настроить шейдер и / или размер входного видеосигнала, чтобы определить, может ли ваше конкретное устройство обрабатывать эту обработку с приемлемой частотой кадров. Базовое изображение может добавить немного накладных расходов, но оно также имеет некоторые умные оптимизации для организации цепочек фильтров.
Самыми медленными совместимыми устройствами были бы iPhone 3G S и iPod touch 3-го поколения, но они не намного медленнее, чем iPhone 4. iPad 2 поражает своими мощными возможностями обработки фрагментов.