Ich entwickle ein Spiel für Android. Es verwendet eine Oberflächenansicht und die Art der bereitgestellten Standard-2D-Zeichnungs-APIs. Als ich das Spiel zum ersten Mal veröffentlichte, machte ich alle möglichen dummen Dinge, wie das Neuzeichnen von 9 Patches auf jedem Frame und ebenfalls mit Text. Seitdem habe ich vieles davon optimiert, indem ich auf Bitmap-Objekte gezeichnet und sie in jedem Frame gezeichnet habe, wobei ich nur bei Bedarf erneut auf die Bitmap-Objekte gezeichnet habe.
Ich habe bereits Beschwerden über Batterieentladung erhalten und möchte nach meinen Änderungen (wissenschaftlich) wissen, ob ich Verbesserungen vorgenommen habe. Leider habe ich keine vorherigen Daten, daher wäre es am nützlichsten, die Leistung mit einem anderen Spiel zu vergleichen.
Ich habe Traceview ausgeführt und die Ergebnisse hauptsächlich verwendet, um CPU-zeitaufwändige Methoden zu identifizieren.
Also - wie lässt sich die Akkuleistung meiner App am besten bestimmen und was ist ein guter Benchmark?
Ich weiß, dass ich die% s verschiedener Apps über die Einstellungen anzeigen kann, aber dies ist wiederum unwissenschaftlich, da die Zahl, die ich daraus erhalte, auch davon abhängt, was in allen anderen Apps passiert. Ich habe (den größten Teil) der Google-Dokumentation durchgesehen, und obwohl klar ist, dass Sie Batterie sparen sollten (und gelegentlich Tipps dazu geben, wie), gibt es kaum Hinweise darauf, wie ich messen kann, wie gut meine App ist durchführen. Das Letzte, was ich möchte, sind weitere Beschwerden über Batterieverbrauch im Android Market!
Danke im Voraus.
BEARBEITEN
Vielen Dank für all Ihre hilfreichen Ratschläge / Vorschläge. Was ich wirklich wissen möchte, ist, wie ich die aus Traceview stammenden Daten (dh die CPU-Zeit in ms, die für jeden Frame des Spiels aufgewendet wurde) verwenden kann, um den Batterieverbrauch zu bestimmen (falls dies überhaupt möglich ist). Wenn ich auf meine ursprüngliche Frage zurückblicke, kann ich sehen, dass ich etwas vage war. Danke noch einmal.
quelle
Antworten:
Hier ist mein Vorschlag:
Ich beobachte den Stromverbrauch, während ich meine Apps (die manchmal die Sensoren mit Raten von <25 ns abfragen) mit PowerTutor entwickle . Probieren Sie es aus, es klingt so, als ob Sie vielleicht suchen, die App sagt Ihnen, was Sie in mW, J oder relativ zum Rest des Systems verwenden. Die Ergebnisse sind auch nach CPU, WLAN, Display (andere installierte Funkgeräte) aufgeschlüsselt. Der einzige Haken ist, dass es für ein bestimmtes Telefonmodell geschrieben wurde, aber ich verwende es mit großem Erfolg auf meinem EVO 4G, Galaxy S (Sprint Epic) und Hero.
Viel Glück, -Steve
quelle
Es besteht die Möglichkeit, dass Ihr Spiel die Batterie entlädt. Ich glaube, dies hängt von mehreren Gründen ab, die wie folgt lauten:
Thread
. Haben Sie die FPS so begrenzt, dass die CPU unnötige Iterationen überspringt? Da Sie mit 2D arbeiten, gehe ich davon aus, dass Sie das verwendenSurfaceView
. 60 FPS reichen für ein Echtzeitspiel.Thread
wenn Ihre Anwendung beendet wird. Daher wiederholen Sie den Code, wenn Ihre Anwendung nicht aktiv ist.wait();
während funktioniertonPause
?Die Leute, die kommentieren, dass in Ihrem Spiel die Batterie leer ist, zielen wahrscheinlich darauf ab, wenn Ihre Anwendung nicht verwendet wird. Andernfalls wäre es seltsam, weil jedes Spiel auf Android Market mehr oder weniger Batterie verbraucht .
quelle
Wenn Sie versuchen, die "Verbesserung gegenüber Ihrer vorherigen Version" einzuschätzen, halte ich es nicht für sinnvoll, mit einem anderen Spiel zu vergleichen! Wenn diese beiden Spiele nicht genau das tun, ist dies so unwissenschaftlich wie es nur geht.
Stattdessen würde ich die vorherige Version Ihrer App aus der Quellcodeverwaltung holen, sie ausführen, messen und dann mit dem neuesten Code ausführen und sie erneut vergleichen.
Zum Vergleich können Sie beispielsweise das Befehlszeilentool "top" verwenden (definitiv in der Busybox verfügbar, wenn Ihr Telefon gerootet ist, nicht sicher, ob es mit einem Standardtelefon geliefert wird. Wahrscheinlich nicht). Das zeigt Ihnen die CPU-Auslastung Ihres Prozesses in Prozent.
quelle
Es gibt einen von Qualcomm entwickelten Batterieprofiler namens Trepn Profiler: https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler
quelle
Theoretisch wäre es möglich, den Akkuverbrauch für Ihre App zu extrapolieren, indem Sie den Stromverbrauch Frame für Frame betrachten. Der beste Weg, dies zu erreichen, besteht darin, den Stromverbrauch der CPU (nur) für einen bestimmten Zeitraum (z. B. zwei Sekunden) zu bewerten, während Ihre App den CPU-intensivsten Betrieb ausführt (außerdem kann der GPU-Stromverbrauch auf diese Weise ermittelt werden Außerdem) während der Aufzeichnung von TraceView-Daten (z. B. Frames pro Sekunde oder Flops pro Sekunde) erhalten Sie den Datenverkehr über die CPU / GPU für eine bestimmte Millisekunde. Mit diesen Daten können Sie den durchschnittlichen Spitzenstromverbrauch Ihrer App genau berechnen, indem Sie den obigen Test einige Male ausführen.
Deshalb sage ich, dass es nur Theorie ist: Es gibt viele Variablen, die berücksichtigt werden müssen:
Ich hoffe, dies gibt einen Einblick in Ihre Frage, obwohl ich möglicherweise tiefer als nötig darauf eingegangen bin.
-Steve
quelle
Eine Ressource, die wir verwendet haben und die äußerst hilfreich ist, ist eine kostenlose App von AT & T namens ARO.
Schau es dir an: ARO
Es hat mir schon früher geholfen und ich sehe es nicht sehr oft erwähnt, also dachte ich, ich würde es hier für jeden ablegen, der es sucht.
quelle
Das erste, was ich tun würde, ist nach einer App zu suchen, die bereits eine bekannte, konsistente Akkunutzung aufweist. Anschließend können Sie diese als Referenz verwenden, um die Nutzung Ihrer App zu bestimmen.
Wenn es keine solche App gibt, müssen Sie auf eine Antwort von jemand anderem hoffen ... und wenn Sie eine solche App erfolgreich erstellen, würde ich empfehlen, Ihre neue App "Batterieverbrauchsreferenz" zu verkaufen, damit andere Programmierer sie verwenden können . :) :)
quelle
Ich weiß, dass diese Frage alt und spät ist, aber für alle, die nach einer Lösung suchen, empfehle ich einen Blick auf den JouleUnit-Test: http://dnlkntt.wordpress.com/2013/09/28/how-to- Test-Energieverbrauch-auf-Android-Geräten /
Es lässt sich in Eclipse integrieren und gibt Ihnen viele Details darüber, wie viel Akku Ihre App verbraucht.
quelle
Ich kenne drei Optionen, die Ihnen bei einer wissenschaftlichen Maßnahme helfen können:
Bitte beachten Sie, dass das aktuelle Telefon (mit Android 6+) im Schätzmodus funktioniert. Wenn Sie genaue Zahlen benötigen, benötigen Sie eine Liste ausgewählter Geräte. Überprüfen Sie den folgenden Link für die Liste: https://developer.qualcomm.com/software/trepn-power-profiler/faq Sie können Apps und das gesamte System separat profilieren.
quelle