Чи достатньо ефективно STL для мобільних пристроїв?


9

Що стосується розробки мобільних ігор на iOS та Android NDK, деякі розробники записують власні контейнери C ++, а інші стверджують, що STL є більш ніж адекватним для розвитку мобільних ігор (наприклад, автор iPhone 3D-програмування використовує STL, а не Objective- С. у своїх прикладах. Його захист полягає в тому, що STL не повільніше, ніж Objective-C).

Потім є також мобільні розробники, які повністю відмовляються від C ++ і повністю розробляють ігри (або в основному) мовою C (C89 / C90).

Які переваги та недоліки кожного підходу?


4
Основні заперечення проти STL - це непередбачувані структури розподілу пам'яті та підтримка компілятора - обидві проблеми можна вирішити, використовуючи альтернативу STL, наприклад EASTL або STLPort.
Рафаель Р.

1
Кілька відповідей з цього питання: gamedev.stackexchange.com/questions/268/… торкайтеся мобільних платформ і повинні дати вам свою відповідь.
Тетрад

5
Я підозрюю, що багато людей "відмовляються" (більше схоже, ніколи не використовуючи) C ++ на мобільних платформах, це менше про STL і більше про незграбність Objective-C ++ (і підтримка C ++, що загалом відстає від інструментальної мережі Apple).

Справжнє запитання: чи можете ви краще написати? Вам краще зрозуміти STL; і у випадках, коли він не робить те, що ви хочете, реалізуючи поведінку, якої ви цього вимагаєте.
deceleratedcaviar

Відповіді:


6

Дозвольте спочатку сказати вам одне. C ++ швидше, ніж виклики Objective-C. Objective-C використовує системи передачі повідомлень, тому він матиме деякий накладний час у порівнянні з C ++. Просто погляньте на деякі зіставлення тут .

Що стосується загальної розробки додатків для iOS, то має сенс використовувати вбудовані функції Objective-C, оскільки продуктивність не може бути певною мірою критеріями. Але при розробці ігор нам потрібно враховувати ці результати.

Коли я працював над своїм попереднім проектом (Robokill), ми оптимізували більшу частину коду, коли це було необхідно, за допомогою викликів звичайного C (ми перетворили наш клас частинок Objective-C у клас C ++). Або ви навіть можете використовувати функції виконання Objective-C для прямих викликів C.

До вашого запитання, ось моя відповідь: так, STL добре оптимізований за своїм призначенням . Незважаючи на те, що код реалізації не так легко читається, цікаво перевірити реалізацію один раз.

Однак ми можемо певною мірою оптимізувати код Objecive-C, попередньо кешуючи покажчики функцій та здійснюючи дзвінки під час виконання Objective-C.

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.