Код C ++ работает очень медленно в преимущественно Objective-C проекте - PullRequest
2 голосов
/ 01 августа 2011

Мне потребовалось добавить экзотический формат изображения в проект. Клиент предоставил только библиотеку c ++. Библиотека выполняет свою работу крайне медленно после компиляции в проекте преимущественно Objective-C (то есть в проекте со всем остальным кодом в target-c)

Я сравнил производительность с реализациями c ++ на Mac и ПК, портированной реализацией C # с ПК - все на компьютерах, похожих друг на друга (с точки зрения использования процессора и памяти). Низкая производительность наблюдается только в проекте Objective-C, гораздо более очевидном на устройстве, чем на симуляторе. Я бы ожидал, что цена устройства меньше (чем Mac / PC) устройства (iPad) не изменится с 0,2 секунды анализа изображения в симуляторе до ошеломляющих 2,4 секунды на изображение на устройстве! Весь ли код на С ++, добавленный в проект Objective-C, работает так медленно?

Изменены все типы компиляторов, множество настроек компилятора. Кроме того, профилирование по времени для реализации кода c ++ отнимает огромное количество времени на тривиальные действия (простые инструкции, такие как ++ и + =).

Как мне подойти к этому, чтобы поднять производительность библиотеки c ++ до разумного уровня в рамках проекта target-c?

1 Ответ

7 голосов
/ 01 августа 2011

Я сравнил производительность с реализациями c ++ на Mac и ПК, портированной реализацией C # на ПК - все на аналогичных компьютерах с точки зрения процессора и памяти.Низкая производительность наблюдается только в проекте Objective-C, гораздо более очевидном на устройстве, чем на симуляторе.

Устройства iOS относительно мощные, учитывая их размер и ограничения батареи, но они не соответствуютдля современного Mac или ПК.Вы ожидаете заметного замедления любого кода, C ++ или другого, при запуске на устройстве по сравнению с симулятором.Когда вы говорите, что тестировали «все на похожих компьютерах», вы имеете в виду похожие друг на друга или похожие, скажем, на iPhone 4?

Я не знаю какого-либо конкретного снижения производительности, связанного с совместным использованием C ++с Objective-C.Вы можете проверить себя, придумав какой-нибудь очень простой тест, кодировать его как на C ++, так и в Objective-C и сравнить время выполнения.

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