アプリケーションは電力消費に大きな影響を及ぼしますか?


16

単一の汎用アプリケーションで、実行中のデバイスの電力消費に影響を与えることができるものはありますか?

個々のアプリケーションの最適化が一般的な方法で消費電力にどのように影響するかについてよく知らないのですが、アプリケーションを作成するさまざまなアプローチが実行中のデバイスの消費電力に影響するかどうかを誰かが説明できますか?

つまり、機能的にまったく同じことを行い、さまざまな方法で記述された単一のプログラムがデバイスの電力消費に大きく影響するのではなく、デバイスの電力消費に大きく影響します。


8
より効率的に実行します。
クリストファーバーマン

私はあなたの質問が完全にオフトピックだと言っているわけではありませんが、Q&Aサイトでの答えよりも本の方が適していると思います。この組み込みシステム、モバイル開発など、完全に何らかのコンテキストを提供する必要があります。答えはそれに大きく依存する必要があります。
K.ステフ

2
バッテリー駆動の組み込みシステムについて話していますか?一般に、電力消費を最小限に抑えるための鍵は、システムが実際に多くのことをする必要がない時間を特定し、システムに実際には何もなければシステムの任意の部分がアクティブになる時間を最小限にすることですする。ほとんどの場合、どれだけの労力をかける価値があるかについてかなり明確な制限があります。デバイスが必要な機能で1mAH /日を使用する場合、1uAH /日だけを無駄にする複雑なルーチンよりも10uAH /日を無駄にする単純なルーチンの方が望ましい場合があります(後者はエネルギーを1%しか節約しないため)。
-supercat

1
特定の文脈ではなく、一般的なことを考えていました。それは「好奇心のため」の質問でした。しかし、たとえば、モバイルデバイスの省電力に関するルールはありますか?または埋め込みシステム?またはWebアプリケーション開発で?ディスクアクセスとネットワーク接続などを遅らせている可能性があります。
フアンマヌエル

1
私はあなたがポイントを逃していると思う。無線を半分使用するようにアプリケーションを変更すると、そのアプリケーションの実行時に電力消費が発生します。電話のラジオは一定の速度で電力を消費していません。電力消費は、ソフトウェアによって何が求められているかに直接依存します。
ロボットを取得

回答:


7

多くの場合、電力消費の懸念はパフォーマンスの低下につながるため、この2つのバランスを取る必要があります。資本コスト会計を適用してより効率的なハードウェアを検討すると、非常に複雑なトレードオフになります。(ミリワット/​​時間を節約するために100時間、またはソフトウェアを実行しているコンピューターのより効率的なPSUに10ドルを費やすだけです)。電力消費(ソフトウェアが原因)を心配することが商業的に意味があるのは、Googleが実行するサイズのサーバーファーム、バッテリー駆動のデバイス、そしてマーケティングがTree Hugging Greenieボックスにチェックを入れたい場合だけです。

「アルゴリズムをより効率的にする」と言って単純化するには複雑すぎます-これは最初の一歩にすぎません。パフォーマンス/電力曲線、特に「知覚パフォーマンス」/電力曲線は非線形です。使用中のOSを制御できるかどうか、およびどのレベルまでかによって異なります。

さらに、質問には特定の状況ごとに異なる回答があります。例えば、私はかつてバッテリー駆動のシステム(9Vセルで18か月を目標とする)で働いていましたが、それはスリープよりも短時間で最大クロック速度でより効率的に動作しますが、同様のソフトウェアを実行している別のマイクロは遅いクロックでチェックする方が良いですしばらくしてから寝ます。


これは実際には正解です。ハードウェアは電力消費においてソフトウェアよりもはるかに感情的な役割を果たします。より効率的なPSUの例は、すべてのデバイスを作成し、単一のアプリケーションの微小な最適化を覆い、それらをわずかな貢献にします。

はい。ただし、プログラムはデバイス上のすべてのハードウェアを均等に使用するわけではありません。たとえば、PCでハードドライブを使用しないプログラムは、ハードドライブから常に読み書きするプログラムよりも消費電力が大幅に少なくなります。
ロボット

HDに依存しない@ StevenBurnap、HDの一部は常にスピンし、ジュースを引きます。最も重要な電力最適化は、常にハードウェア(およびその中のマイクロコード)から行われます。Green HDを搭載した同じソフトウェアは消費電力が少ないため、ハードウェアはさらに大きな違いをもたらします。

2
それは真実ではありません。Kill-a-wattをシステムに接続し、2つのアプリケーションを実行します。1つは無限ループに数値を追加するだけで、もう1つは5 GBファイルを繰り返しスキャンします。違いがわかります。消費電力は、コンピュータで求められる内容に応じて、場合によっては劇的に、明らかに変化します。
ロボットを取得

実行中のソフトウェアのみに基づいてPCの消費電力が変化する例を次に示します。codinghorror.com
Gort the Robot

2

できる最善のことは、アルゴリズムとアプリケーションのビジネスロジックを最適化することです。

また、特定のコンパイルプロセスを採用することもできます。多くのコーダーは、コンパイル段階でインライン関数と最適化を忘れてしまいます。ほとんどの場合、これはパフォーマンスの観点から、したがって消費電力の最適化の観点から小さな優位性をもたらします。


これは正しい答えです。最適化が唯一の方法です。
superM

1
これはどのように正しい答えですか?システムには、CPUよりもはるかに多くの電力シンクがあります。
ジェームズ

1
@JamesのソフトウェアはCPUのみを使用していますか?他に何も?
-user827992

3
@ user827992:いいえ、それがポイントです。ラジオ(GSM / 3G / Wifi)や画面のようなものは、CPUよりもはるかに多くの電力を消費します。ここでは、アルゴリズムを最適化しても役に立ちません。消費電力が懸念されるシステムでは、コードの最適化は時期尚早な最適化と言えます。
ジェームズ

1
@ user827992:はい。ただし、これらの節約は、バッテリー消費の他のソースと比較するとごくわずかです。必要に応じて-OInfinityに最適化できますが、たとえば、コードが死んだ場所でフラグをポーリングする場合です。
ジェームズ

2

正解は....

"We should forget about small efficiencies, 
say about 97% of the time: premature 
optimization is the root of all evil"
Donald Knuth

クライアントに価値を提供することに焦点を当てます。クリーンで、理解しやすく、保守しやすいソリューションを作成します。

さらに「パワー」が必要な場合は、アプリケーションのプロファイルを作成できます。プロファイリングを使用すると、変更されたときに最大のメリットが得られ、「効率」が向上するボトルネックを特定できます。


4
「電力消費はあなたの問題ではありません。クライアントの価値に焦点を合わせてください」と言っているので、これは質問に答えないでしょう。そして、それはある管理マントラによく似ています。OPは、低消費電力を要求する正当な理由があるかもしれません。
K.ステフ

よく私は「電力消費」を誤解しました。それでも、彼は到達したときに、システムの電力を消費しすぎている部分を分析することによって最適化を実行する必要がある電力消費レベルを設定する必要があると思います。これは、一連のストレステストによって実行できます。
ミハル・フラン

1

CPUに関しては、やることがあまりないのは事実ですが、多くの場合、使用時に電力を消費するデバイスの機能があります。PCでは、ほとんど誰も気にしませんが、ディスク読み取りによって(SSD以外のドライブが想定されている)ハードドライブが回転し、ヘッドが移動することは確かに事実です。PCではこれは簡単ですが、モバイルデバイスでは、これは非常に現実的な問題です。

電話では、これの最も明白な例はコミュニケーションです。ワイヤレス信号を送信するにはエネルギーが必要です。500 WATT電源に接続されたPCでは、重要ではありません。電話では、そうではありません。大量のデータを求めてサーバーを絶えずポーリングするアプリケーションは、ネットワークをまったく使用しないアプリケーションよりも劇的に多くの電力を使用します。

これは非常に現実的な問題であり、「Androidアプリケーションがバッテリーを使い果たした」とGoogleで検索するだけです。 ここでは、電力消費を最小化する方法を開発者に伝える多くのページの一つです。

一般に、一般的なパフォーマンス(つまり、可能な限りCPUを使用)とネットワーク使用率を最適化します。できるだけ小さなメッセージで、できるだけ少ない通信を行います。

他の人が言ったように、これは、問題を特定して電力使用のプロファイルを作成したときに、ほとんどのコードが完了した後のタスクです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.