Je suis en train de développer un jeu qui utilise la physique box2d assez intensivement et mon bêta-testeur a rapporté des performances bâclées quand il y avait beaucoup d'objets sur l'écran. J'étais pratiquement toujours accroché à la version DEBUG de l'application et j'avais une bonne stabilité de 60 fps tout le temps. Après avoir manipulé pratiquement tous les paramètres de construction, j'ai remarqué que dans le mode de construction DEBUG un drapeau ONLY_ACTIVE_ARCH
était YES
alors que dans RELEASE il était NO
. Après la construction de la version RELEASE uniquement pour ARMv6 et l'installation sur un appareil compatible ARMv7, nous avions une stabilité de 60 fps. Essayer de construire pour ARMv7 (Thumb) a donné une performance bâclée (30 - 50% pire) à nouveau. Il y avait également une légère baisse de performance visible dans les environnements simulés non physiques. Les appareils de test étaient iPod Touch 4, iPhone 4 et iPhone 3GS. Pouvez-vous s'il vous plaît partager vos opinions sur pourquoi cela pourrait être ainsi? Je n'ai aucune idée :)Cocos2d + performance Box2d ARMv6 vs ARMv7
Répondre
Tout d'abord: toujours mesurer les performances uniquement dans les versions de version. Les builds de débogage incluent des assertions, des logs et peut-être d'autres choses qui peuvent fausser vos résultats de performance, généralement au pire. Si je comprends bien, vous dites que le code ARMv6 est fluide (60 fps) sur tous les appareils, tandis que la construction d'ARMv7 avec les instructions Thumb activées vous donne des performances "bâclées". Je suppose que "30-50% pire" signifie environ 30-45 fps pour le code ARMv7 sur les 3 appareils mentionnés. Il semble également que vous n'avez pas de scénario de test comparable, c'est-à-dire un jeu commençant avec le même nombre d'objets aux mêmes positions pour pouvoir comparer précisément les performances entre les appareils. Il est difficile d'évaluer les différences réelles de performance si vous reproduisez manuellement une scène «beaucoup d'objets» en jouant au jeu.
Comme vous avez déjà activé les instructions ARMv7 et thumb, vous devriez obtenir de bonnes performances, en particulier sur les périphériques de 4ème génération. Vous pourriez vouloir essayer avec le pouce désactivé et refaire le test. Vous devriez également vérifier le niveau d'optimisation de votre version, il devrait être: le plus rapide, le plus petit. En général, vérifiez vos paramètres de construction pour toute entrée qui affecte uniquement ARMv6 ou ARMv7 (ces entrées sont marquées d'une flèche pour les développer).
Vous devez également vérifier que votre problème de performances est réellement lié à la physique. "Beaucoup d'objets" signifie qu'il y a aussi "beaucoup de sprites" sur l'écran. Si elles ne sont pas synchronisées par lots, les performances peuvent baisser beaucoup plus rapidement. Si elles sont également partiellement transparentes, pivotées ou mises à l'échelle, les performances sans sprites seront encore plus mauvaises.
J'ai remarqué le même problème. Après quelques tests, je reconnus que la performance a beaucoup mieux si je mets la renderMode suivante:
<renderMode>gpu</renderMode>
Je l'ai testé cela sur une galaxie s2. Jusqu'à présent, je ne sais pas comment l'impact sur les autres appareils est ...
- 1. iOS: Xcode: Architecture: armv7 vs armv6
- 2. UIRequiredDeviceCapabilities armv6 et armv7
- 3. Optimisé (armv7) par rapport à Standard (armv6 armv7)
- 4. écran des systèmes de coordonnées pour ARMv6, ARMv7 (développement iPhone)
- 5. Xcode 4 Final - problème "armv6 armv7" lors de la liaison avec armv6 libs
- 6. avertissement: iPad seulement les applications ne devraient pas inclure une architecture armv6 (actuel ARCHS = "armv6 armv7")
- 7. erreurs armv6/armv7 lors de la compilation pour iPhone
- 8. Est-il sécuritaire d'ajouter ARCHS_STANDARD_32_BIT = armv6 armv7 dans XCode 4.2?
- 9. BOX2D boucle étrange (c-objectif, cocos2d, box2d)
- 10. Bords - Cocos2d/Box2D
- 11. Power Meter - Cocos2d/Box2d
- 12. Cocos2D + Box2D Editor?
- 13. Réinitialiser Sprite - Box2d (Cocos2d)
- 14. Corde dans cocos2d & box2d
- 15. Cocos2d ou Box2d?
- 16. problème cocos2d/box2d
- 17. Cocos2d + Box2d ou Chipmunk
- 18. Ecran rétréci dans CoCos2d Box2d
- 19. Créer une bombe - Cocos2d/Box2d
- 20. Iphone jeu cocos2d et box2d
- 21. Joint dans Box2d avec cocos2d
- 22. Capteur de contact Box2d COCOS2D
- 23. Création d'un corps - Cocos2d/Box2d
- 24. Comment démarrer avec Cocos2D Box2D?
- 25. Comment l'évolution de l'architecture armv6/armv7 en armv6 affecte-t-elle mon application iPad? Y aura-t-il des pertes de performance/stabilité?
- 26. comment convertir le projet cocos2d en projet cocos2d-box2d?
- 27. b2World se comporte bizarrement (BOX2D + Cocos2d)
- 28. Eclairage et ombres avec Cocos2D et Box2D
- 29. cocos2d/box2d iPhone - Chemins circulaires aléatoires
- 30. cocos2d + box2d: Rotation vers le point
Merci ... Si le jeu fonctionne à 60 fps constant dans DEBUG, il devrait fonctionner de la même façon ou plus vite dans RELEASE, c'est pourquoi je n'ai pas t tester dans la version. Je sais exactement combien d'objets j'ai dessinés/simulés à un moment donné. J'ai essayé de construire le jeu avec exactement les mêmes paramètres de construction (le plus rapide, le plus petit inclus) sauf pour ARMv6/ARMv7 (Thumb), pour DEBUG et RELEASE. Pourtant, il fonctionne plus vite quand je le construis avec ARMv6 et je ne vois pas pourquoi. Mais vous avez raison, je vais faire un test quand j'en aurai fini avec ce projet et développer la question. –
Normalement, les versions de versions s'exécutent au moins aussi vite ou plus vite que les versions de débogage. Mais il y a parfois des cas bizarres qui valent la peine de tester uniquement les performances dans les versions de versions. Après tout, c'est ce que vos utilisateurs vont jouer avec. – LearnCocos2D