Android用のゲームを開発しています。サーフェスビューを使用し、提供される標準の2D描画APIの一種を使用します。ゲームを最初にリリースしたとき、私は各フレームで9パッチを再描画するなど、あらゆる種類の無作法なことをしていた。それ以来、ビットマップオブジェクトに描画して各フレームを描画し、必要なときにのみビットマップオブジェクトに再描画することで、この多くを最適化しました。
以前にバッテリーの消耗について苦情を受けていましたが、修正を行った後、改善したかどうか(科学的に)知りたいと思います。残念ながら、私は過去のデータを持っているわけではないので、パフォーマンスを他のゲームと比較するのが最も便利でしょう。
Traceviewを実行しており、その結果を主にCPU時間のかかるメソッドを識別する目的で使用しています。
-アプリのバッテリーパフォーマンスを判断する最良の方法は何ですか?また、優れたベンチマークは何ですか?
設定からさまざまなアプリの%sを確認できることはわかっていますが、これは非科学的です。これから得られる数値は、他のすべてのアプリで何が起こっているかにも依存します。私は(ほとんど)Googleのドキュメントを調べましたが、メッセージは明らかですが、shouldはバッテリーを節約している(そして、方法)、アプリのパフォーマンスをどのように測定できるかについてはほとんど示されていません。私が最後に欲しいのは、Android Market!
前もって感謝します。
有益なアドバイスや提案をありがとう。私が本当に知りたいのはTraceviewからのデータ(つまり、ゲームの各フレームに費やされるミリ秒単位のCPU時間)を使用してバッテリー使用量を判断する方法(可能な場合) 。元の質問を読み返すと、私は少しあいまいだったことがわかります。再度、感謝します。
私の提案は次のとおりです。
PowerTutor を使用して、アプリの開発中に電力消費を監視します(25ns未満の速度でセンサーをポーリングすることがあります)。それを確認してください、おそらくあなたが探しているもののように聞こえます。また、結果はCPU、WiFi、ディスプレイ(インストールされている他の無線)ごとに分類されます。唯一の難点は、特定の電話モデル向けに書かれていることですが、EVO 4G、Galaxy S(Sprint Epic)、およびHeroで大成功を収めています。
頑張って、スティーブ
ゲームでバッテリーが消耗している可能性があります。これは、次のようないくつかの理由に依存すると考えています。
Thread
の助けを借りてiteratingです。 CPUが不要な反復をスキップするようにFPSを制限しましたか? 2Dで作業しているので、SurfaceView
を使用していると思います。リアルタイムゲームには60 FPSで十分です。Thread
をstopしません。したがって、アプリケーションが動作していないときにコードを繰り返します。onPause
中にwait();
を行うiterate lockをお持ちですか?あなたのゲームがバッテリーをリークしているとコメントする人々は、おそらくあなたのアプリケーションが使用されていないときに狙いを定めます。そうしないと、Android Marketはバッテリーを消耗します-より多くor少ないため、それは奇妙です。
「以前のバージョンに対する改善」を評価しようとしている場合、別のゲームと比較することは意味がないと思います!これらの2つのゲームが正確に行わない限り、これは非科学的です。
代わりに、ソース管理からアプリの以前のバージョンを取得して実行し、測定してから、最新のコードで実行して再度比較します。
比較するために、たとえばコマンドラインツール「top」を使用できます(お使いの電話がルート化されている場合、busyboxで確実に使用できます。これにより、プロセスのCPU使用率がパーセントで表示されます。
Qualcommが開発したTrepn Profilerというバッテリープロファイラーがあります。 https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler
traceviewからのデータ(ゲームの各フレームに費やされるミリ秒単位のCPU時間)を使用して、バッテリーの使用状況を判断する方法(可能な場合)
理論的には、フレームごとに消費電力を調べることで、アプリのバッテリー使用量を推定することが可能です。これを達成する最善の方法は、アプリが最もCPUを集中的に使用する操作を実行している間に、特定の期間(たとえば2秒)のCPUの電力消費量(のみ)を評価することです(さらに、GPUの電力使用量をこの方法で収集できます)また、TraceViewデータ(1秒あたりのフレーム数や1秒あたりのフロップ数など)を記録しながら、特定のミリ秒の間、CPU/GPUを介したトラフィックを提供します。このデータを使用して、上記のテストを数回実行することで、アプリの平均ピーク消費電力を正確に計算できます。
ここに私がそれが理論のみであると言う理由があります:考慮すべき多くの変数があります:
必要以上に深く掘り下げていたかもしれませんが、これがあなたの質問に何らかの洞察を提供することを望みます。
-スティーブ
探している人にとって、私たちが非常に役立つリソースの1つは、AROと呼ばれるAT&Tの無料アプリです。
見てみましょう: [〜#〜] aro [〜#〜]
それは私を前に助けました、そして、私はそれがあまり頻繁に言及されないので、探している人のためにここにそれを落とすと思いました。
私はこの質問が古くて遅いことを知っていますが、解決策を探してここに来る人は、JouleUnitテストをご覧になることをお勧めします: http://dnlkntt.wordpress.com/2013/09/28/ how-to-test-energy-consumption-on-Android-devices /
Eclipseに統合され、アプリが消費しているバッテリーの量に関する詳細を提供します。
科学的手段を持つために役立つ3つのオプションを知っています。
最近の携帯電話(Android 6+)の場合、推定モードで動作します。正確な番号が必要な場合は、選択したデバイスのリストが必要です。リストについては、次のリンクを確認してください。 : https://developer.qualcomm.com/software/trepn-power-profiler/faq アプリとシステム全体のプロファイルを個別に作成できます。
「設定を通じてさまざまなアプリの%sを確認できることはわかっていますが、これは非科学的です。これから得られる数値は、他のすべてのアプリで何が起こっているかにも依存します。」
私が最初に行うことは、既知の一貫したバッテリー使用量のある既存のアプリを探し出し、それをアプリの使用状況を判断するための参照として使用することです。
そのようなアプリがない場合、他の誰かからの回答を期待する必要があります...そしてそのようなアプリの作成に成功した場合、他のプログラマーが使用できるように新しい「バッテリー使用リファレンス」アプリを販売することをお勧めします。 :)