Когда дело доходит до разработки мобильных игр на iOS и Android NDK, некоторые разработчики пишут свои собственные контейнеры на C ++, в то время как другие утверждают, что STL более чем достаточно для разработки мобильных игр (например, автор 3D-программирования для iPhone использует STL, а не Objective- С в своих примерах. Его защита заключается в том, что STL не медленнее, чем Objective-C).
Кроме того, есть разработчики мобильных приложений, которые полностью отказываются от C ++ и полностью (или в основном) разрабатывают игры на языке C (C89 / C90).
Каковы преимущества и недостатки каждого подхода?
Ответы:
Позвольте мне сначала сказать вам одну вещь. C ++ быстрее, чем вызовы Objective-C. Objective-C использует системы передачи сообщений, поэтому он будет иметь некоторые накладные расходы по сравнению с C ++. Просто взгляните на некоторые сравнения здесь .
Переходя к общей разработке приложений для iOS, имеет смысл использовать встроенные функции Objective-C, поскольку производительность в некоторой степени не может быть критерием. Но при разработке игр мы должны учитывать эти результаты.
Когда я работал над моим предыдущим проектом (Robokill), мы оптимизировали большую часть кода там, где это было необходимо, с помощью вызовов обычного C (мы преобразовали наш класс частиц Objective-C в класс C ++). Или вы можете даже использовать функции времени выполнения Objective C для прямых вызовов языка C.
Возвращаясь к вашему вопросу, вот мой ответ: да, STL хорошо оптимизирован для своих целей . Несмотря на то, что код реализации не очень читабелен, интересно проверить реализацию один раз.
Тем не менее, мы можем оптимизировать код Objecive-C до некоторой степени, предварительно кэшируя указатели на функции и совершая вызовы во время выполнения Objective-C.
Надеюсь это поможет!
источник