Je développe un jeu pour Android. Il utilise une vue de surface et utilise le type d'API de dessin 2D standard fourni. Lorsque j'ai lancé le jeu pour la première fois, je faisais toutes sortes de choses idiotes, telles que dessiner à nouveau 9 patchs sur chaque image et de même avec du texte. Depuis, j'ai optimisé une grande partie de ces opérations en dessinant des objets Bitmap et en les dessinant chaque image, en ne les redessinant que lorsque cela est nécessaire.
J'ai déjà reçu des plaintes concernant l'épuisement de la batterie, et après mes modifications, j'aimerais savoir (scientifiquement) si j'ai apporté des améliorations. Malheureusement, je ne dispose d'aucune donnée préalable, il serait donc très utile de comparer les performances à un autre jeu.
J'exécute Traceview et j'en utilise les résultats principalement pour identifier les méthodes consommant beaucoup de temps processeur.
Alors - Quel est le meilleur moyen de déterminer les performances de la batterie de mon application et quel est le bon point de référence?
Je sais que je peux examiner les% s des différentes applications via les paramètres, mais cela n’est pas scientifique non plus, car le chiffre que j’en tire dépend également de ce qui se passe dans toutes les autres applications. J'ai parcouru (la plupart des) la documentation de Google et, même si le message est clair que vous devriez économiser de la batterie (et que cela donne une astuce occasionnelle quant à la façon de le faire), il y a peu d'indication sur la façon dont je peux mesurer bien mon application est performante. La dernière chose que je veux, ce sont davantage de plaintes concernant l'épuisement de la batterie sur l'Android Market!
Merci d'avance.
Merci pour tous vos conseils utiles/suggestions. Ce que je veux vraiment savoir, c’est comment utiliser les données provenant de Traceview (c’est-à-dire: temps CPU en ms consacré à chaque image du jeu) pour déterminer l’utilisation de la batterie (si cela est possible). En relisant ma question initiale, je peux voir que j'étais un peu vague. Merci encore.
Voici ma suggestion:
Je surveille la consommation d'énergie tout en développant mes applications (qui interrogent parfois les capteurs à une vitesse <25 ns) à l'aide de PowerTutor . Regardez, ça ressemble à ceci peut-être ce que vous recherchez, l'application vous indique ce que vous utilisez dans mW, J ou par rapport au reste du système. De plus, les résultats sont ventilés par CPU, WiFi, Affichage, (autres radios installées). Le seul problème est qu'il est écrit pour un modèle de téléphone spécifique, mais je l'utilise avec beaucoup de succès sur mon EVO 4G, mon Galaxy S (Sprint Epic) et mon héros.
Bonne chance, - Steve
Il est possible que votre jeu épuise la batterie. Je crois que cela dépend de plusieurs raisons qui se lisent comme suit:
Thread
. Avez-vous limité le FPS pour que le processeur ignore les itérations inutiles? Puisque vous travaillez en 2D, je suppose que vous utilisez la SurfaceView
. 60 FPS suffiront pour un jeu en temps réel.Thread
lorsque votre application se termine. Par conséquent, vous réitérez le code lorsque votre application n'est pas active.wait();
durant onPause
?Les personnes qui commentent que la batterie de leur jeu a coulé ont probablement pour objectif que votre application ne soit pas utilisée. Sinon, ce serait étrange, car chaque jeu sur Android Market draine la batterie - plus ou moins.
Si vous essayez de mesurer "l'amélioration par rapport à votre version précédente", je ne pense pas qu'il soit logique de comparer à un autre jeu! À moins que ces deux jeux ne fassent exactement le nécessaire, c'est aussi peu scientifique que possible.
Au lieu de cela, je récupèrerais la version précédente de votre application à partir du contrôle de code source, la lancerais, la mesurerais, puis le lancer avec le dernier code et le comparer à nouveau.
Pour comparer, vous pouvez par exemple utiliser l'outil de ligne de commande "top" (définitivement disponible dans busybox si votre téléphone est enraciné, ne savez pas s'il est fourni avec un téléphone standard. Probablement pas). Cela vous montre l'utilisation du processeur de votre processus en pourcentage.
Il existe un profileur de batterie développé par Qualcomm appelé Trepn Profiler: https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler
comment puis-je utiliser les données provenant de Traceview (c'est-à-dire: temps processeur en ms passé sur chaque image du jeu) pour déterminer l'utilisation de la batterie (si cela est possible)
En théorie, il serait possible d'extrapoler l'utilisation de la batterie pour votre application en examinant la consommation d'énergie image par image. Le meilleur moyen d'y parvenir serait d'évaluer la consommation d'énergie du processeur (uniquement) pendant une période donnée (par exemple, deux secondes) pendant que votre application exécute l'opération la plus intensive en ressources processeur (en outre, l'utilisation de l'alimentation du GPU pourrait être obtenue de cette façon). également) tout en enregistrant des données TraceView (telles que des images par seconde ou des flops par seconde) vous donnant le trafic sur le processeur/GPU pour une milliseconde donnée. En utilisant ces données, vous pouvez calculer avec précision la consommation moyenne d’énergie de pointe de votre application en exécutant le test ci-dessus plusieurs fois.
Voici pourquoi je dis que ce n'est que de la théorie: Il y a plusieurs variables à prendre en compte:
J'espère que cela donne un aperçu de votre question, même si j'y suis peut-être allé plus loin que nécessaire.
-Steve
Pour ceux qui cherchent, l'une des ressources extrêmement utiles que nous utilisons est une application gratuite d'AT & T appelée ARO.
Donnez-lui un coup d'oeil: ARO
Cela m’avait déjà aidé et je ne le vois pas mentionné très souvent, alors j’ai pensé le laisser tomber ici pour ceux qui le cherchaient.
Je sais que cette question est ancienne et qu'il est tard, mais si vous venez ici à la recherche d'une solution, je vous suggère de jeter un coup d'œil au test JouleUnit: http://dnlkntt.wordpress.com/2013/09/ 28/Comment-tester-la-consommation-énergétique-sur-les-appareils-Android /
Il s'intègre à Eclipse et vous fournit une grande quantité de détails sur la quantité de batterie utilisée par votre application.
Je connais trois options qui peuvent vous aider pour une mesure scientifique:
Veuillez noter que pour les téléphones récents (avec Android 6+), cela fonctionne en mode estimation. Si vous avez besoin de chiffres précis, vous devez avoir une liste de périphériques sélectionnés. Consultez le lien suivant pour obtenir la liste: https://developer.qualcomm.com/software/trepn-power-profiler/faq } _ Vous pouvez profiler les applications séparément et l'ensemble du système.
"Je sais que je peux examiner les% s de différentes applications à travers les paramètres, Mais ceci n’est pas scientifique non plus, car le chiffre Que je tire de cela dépend également de Ce qui se passe dans tous les autres applications. "
La première chose que je ferais est de rechercher une application utilisant déjà une batterie de manière constante et connue. Vous pourrez ensuite vous en servir comme référence pour déterminer l'utilisation de votre application.
S'il n'y a pas une telle application, vous devrez espérer obtenir une réponse de quelqu'un d'autre ... et si vous réussissez à créer une telle application, je suggérerais de vendre votre nouvelle application "référence d'utilisation de la batterie" afin que d'autres programmeurs puissent l'utiliser . :)