La STL est-elle suffisamment efficace pour les appareils mobiles?

9

En ce qui concerne le développement de jeux mobiles sur iOS et Android NDK, certains développeurs écrivent leurs propres conteneurs C ++, tandis que d'autres affirment que STL est plus que suffisant pour le développement de jeux mobiles (par exemple, l'auteur de la programmation iPhone iPhone utilise STL plutôt que Objective- C dans ses exemples. Sa défense est que STL n'est pas plus lent que Objective-C).

Ensuite, il y a aussi des développeurs mobiles qui abandonnent complètement le C ++ et développent des jeux entièrement (ou principalement) en langage C (C89 / C90).

Quels sont les avantages et les inconvénients de chaque approche?

mx2
la source
4
Les principales critiques contre la STL sont ses modèles d'allocation de mémoire imprévisibles et la prise en charge du compilateur - les deux problèmes peuvent être résolus en utilisant une alternative STL, par exemple EASTL ou STLPort.
Raphael R.
1
Plusieurs réponses à cette question: gamedev.stackexchange.com/questions/268/… toucher sur les plateformes mobiles et devrait vous donner votre réponse.
Tetrad
5
Je soupçonne que pour beaucoup de gens "abandonnant" (plus comme, n'utilisant jamais) le C ++ sur les plates-formes mobiles, il s'agit moins de STL et plus de la maladresse d'Objective-C ++ (et le support C ++ est généralement en retard sur la chaîne d'outils d'Apple).
La vraie question est, pouvez-vous mieux écrire? Vous feriez mieux de comprendre la STL; et dans les cas où il ne fait pas ce que vous voulez, implémenter le comportement dont vous avez besoin.
deceleratedcaviar

Réponses:

6

Permettez-moi de vous dire une chose en premier. C ++ est plus rapide que les appels Objective-C. Objective-C utilise des systèmes de transmission de messages, il aura donc une surcharge d'exécution par rapport à C ++. Jetez un œil à certaines des comparaisons ici .

En ce qui concerne le développement général des «applications» sur iOS, il est logique d'utiliser les fonctions intégrées d'Objective-C car les performances ne peuvent pas être un grand nombre de critères dans une certaine mesure. Mais dans le développement de jeux, nous devons considérer ces résultats.

Lorsque je travaillais sur mon projet précédent (Robokill), nous avons optimisé la plupart du code là où cela était nécessaire avec des appels plain-C (nous avons converti notre classe de particules Objective-C en classe C ++). Ou vous pouvez même utiliser les fonctions d'exécution Objective-C pour les appels C directs.

Pour en venir à votre question, voici ma réponse: oui, STL est bien optimisé pour son objectif . Même si le code d'implémentation n'est pas très lisible, il est intéressant de vérifier une fois l'implémentation.

Cependant, nous pouvons optimiser le code Objecive-C dans une certaine mesure, en mettant en cache les pointeurs de fonction et en effectuant des appels avec le runtime Objective-C.

J'espère que cela t'aides!

Ayyappa
la source