単一の汎用アプリケーションで、実行中のデバイスの電力消費に影響を与えることができるものはありますか?
個々のアプリケーションの最適化が一般的な方法で消費電力にどのように影響するかについてよく知らないのですが、アプリケーションを作成するさまざまなアプローチが実行中のデバイスの消費電力に影響するかどうかを誰かが説明できますか?
つまり、機能的にまったく同じことを行い、さまざまな方法で記述された単一のプログラムがデバイスの電力消費に大きく影響するのではなく、デバイスの電力消費に大きく影響します。
単一の汎用アプリケーションで、実行中のデバイスの電力消費に影響を与えることができるものはありますか?
個々のアプリケーションの最適化が一般的な方法で消費電力にどのように影響するかについてよく知らないのですが、アプリケーションを作成するさまざまなアプローチが実行中のデバイスの消費電力に影響するかどうかを誰かが説明できますか?
つまり、機能的にまったく同じことを行い、さまざまな方法で記述された単一のプログラムがデバイスの電力消費に大きく影響するのではなく、デバイスの電力消費に大きく影響します。
回答:
多くの場合、電力消費の懸念はパフォーマンスの低下につながるため、この2つのバランスを取る必要があります。資本コスト会計を適用してより効率的なハードウェアを検討すると、非常に複雑なトレードオフになります。(ミリワット/時間を節約するために100時間、またはソフトウェアを実行しているコンピューターのより効率的なPSUに10ドルを費やすだけです)。電力消費(ソフトウェアが原因)を心配することが商業的に意味があるのは、Googleが実行するサイズのサーバーファーム、バッテリー駆動のデバイス、そしてマーケティングがTree Hugging Greenieボックスにチェックを入れたい場合だけです。
「アルゴリズムをより効率的にする」と言って単純化するには複雑すぎます-これは最初の一歩にすぎません。パフォーマンス/電力曲線、特に「知覚パフォーマンス」/電力曲線は非線形です。使用中のOSを制御できるかどうか、およびどのレベルまでかによって異なります。
さらに、質問には特定の状況ごとに異なる回答があります。例えば、私はかつてバッテリー駆動のシステム(9Vセルで18か月を目標とする)で働いていましたが、それはスリープよりも短時間で最大クロック速度でより効率的に動作しますが、同様のソフトウェアを実行している別のマイクロは遅いクロックでチェックする方が良いですしばらくしてから寝ます。
できる最善のことは、アルゴリズムとアプリケーションのビジネスロジックを最適化することです。
また、特定のコンパイルプロセスを採用することもできます。多くのコーダーは、コンパイル段階でインライン関数と最適化を忘れてしまいます。ほとんどの場合、これはパフォーマンスの観点から、したがって消費電力の最適化の観点から小さな優位性をもたらします。
正解は....
"We should forget about small efficiencies,
say about 97% of the time: premature
optimization is the root of all evil"
Donald Knuth
クライアントに価値を提供することに焦点を当てます。クリーンで、理解しやすく、保守しやすいソリューションを作成します。
さらに「パワー」が必要な場合は、アプリケーションのプロファイルを作成できます。プロファイリングを使用すると、変更されたときに最大のメリットが得られ、「効率」が向上するボトルネックを特定できます。
CPUに関しては、やることがあまりないのは事実ですが、多くの場合、使用時に電力を消費するデバイスの機能があります。PCでは、ほとんど誰も気にしませんが、ディスク読み取りによって(SSD以外のドライブが想定されている)ハードドライブが回転し、ヘッドが移動することは確かに事実です。PCではこれは簡単ですが、モバイルデバイスでは、これは非常に現実的な問題です。
電話では、これの最も明白な例はコミュニケーションです。ワイヤレス信号を送信するにはエネルギーが必要です。500 WATT電源に接続されたPCでは、重要ではありません。電話では、そうではありません。大量のデータを求めてサーバーを絶えずポーリングするアプリケーションは、ネットワークをまったく使用しないアプリケーションよりも劇的に多くの電力を使用します。
これは非常に現実的な問題であり、「Androidアプリケーションがバッテリーを使い果たした」とGoogleで検索するだけです。 ここでは、電力消費を最小化する方法を開発者に伝える多くのページの一つです。
一般に、一般的なパフォーマンス(つまり、可能な限りCPUを使用)とネットワーク使用率を最適化します。できるだけ小さなメッセージで、できるだけ少ない通信を行います。
他の人が言ったように、これは、問題を特定して電力使用のプロファイルを作成したときに、ほとんどのコードが完了した後のタスクです。