私は何らかの理由で待機するようなものを使わずに、毎秒forループを実行するプログラムをC++で作成しました。これは一貫してCPUの2〜10%を使用します。プログラムをより複雑にすることなく、より多くのCPUを使用し、より多くの計算を行うように強制する方法はありますか?さらに、私はWindowsコンピュータ上でC :: Bを使ってコンパイルします。基本的には、CPUの使用量を増やすことでプログラムを高速化する方法があるかどうかを尋ねています。C++プログラムのCPU使用量を増やす
答えて
アプリケーションに電源があると仮定すると(PROCESS_SET_INFORMATION
アクセス権)、SetPriorityClass
を使用すると、他のすべてのプロセスの通常の損害につながります。
あなたは(私は強くあなたはおそらくはこの1つ打撃を与えるべきではないことを示唆している)ABOVE_NORMAL_PRIORITY_CLASS
(最初にこれを試してみてください)、HIGH_PRIORITY_CLASS
(これには充分に注意してください)またはREALTIME_PRIORITY_CLASS
を行くことができます。
より高い優先度を試してもそれでもクロックがかなり低い場合は、出力ファイルにデータを書き込んでいる場合など、CPUにバインドされていない可能性があります。その場合、おそらくへの道を見つける必要があります。自分自身をCPUにバインドさせてください。
このようにすることは必要ではない(または望ましいこともあります)ことに留意してください。もしあなたが他のスレッドよりも高い優先順位で走っていて、まだ多くのCPUを吸い上げていないのであれば、それはおそらくWindowsが必要と思わない(正当な理由で)必要があるからです。
C++を使用する場合は、Intel Threading Building Blockの使用を検討してください。あなたはいくつかの例を見つけることができますhere。
システムから追加のリソースを要求することは、プログラムの権利または責任ではありません。それはリソーススケジューラとしてのOSの仕事です。
OSが適合するよりも多くのCPU時間を使用する必要がある場合は、プラットフォーム依存のAPIを使用してOSから要求する必要があります。この場合、それはSetPriorityClass
またはSetThreadPriority
の行に沿ったものと思われます。
これは、CPUの10%しか使用しない理由によって異なります。マルチCPUマシンを使用していて、プログラムが1つのCPUしか使用していない場合は、その追加の馬力を使用するためにコードに並行性を導入する必要があります。
何か他のもの(ディスクとの間でデータをコピーするなど)によって制限されている場合、CPUに集中する必要はありません。ボトルネックが何であれ、それに集中する必要があります。おそらく、リミッタはディスクから読み込みます。これは、より良いキャッシングメカニズムを使用して改善することができます。
一部のプロファイラは、コードのボトルネックがどこにあるかを非常にうまく示しています。たとえば、CodeAnalyst(AMDチップの場合のみ)にはサイクルごとの命令があります。私は確かにインテルのプロファイラーは似ています。
ビリー・オニールが言っているように、CPUの10%でスタックされている8コアでの走りが正しいとすれば。これがあなたの問題なら、WindowsのmsvC++は標準アルゴリズムのパラレルモード(parallel patterns library)を持っています。これは、あなたのループをC++の方法で書いていれば、並列化を無料で行うことができます(ループがスレッドセーフであることを確認する責任があります)。私はmsvcバージョンを使用していませんが、gnu::__parallel_for_each
などは扱いになります。
- 1. wxWidgetsプログラムはCPU使用量を増やす
- 2. プログラムで制御された方法でCPU使用量を増やす
- 3. 私のCプログラムのCPU使用量とメモリ使用量を表示したい
- 4. RAMの使用量を増やすR
- 5. Javaアプリケーションが使用するCPUの量を手動で増やす
- 6. テストプログラムを設計する:CPU使用量を増減する
- 7. C++からWindows APIを使ってアプリケーションのCPU使用量やディスク使用量を取得する方法は?
- 8. ClionのCプログラムのスタックサイズを増やす
- 9. プログラムでオブジェクト名を増やすC#
- 10. iPhone:音量を増やす
- 11. LinuxのプログラムのCPU使用量を計算する
- 12. Javascript/Node.js現在のCPU使用量を計算するプログラム
- 13. レール5のアップグレードがデータベースのCPU使用量を大幅に増やすのはなぜですか?
- 14. IISサーバーのRAM使用量を増やす
- 15. リミットジョブのCPU使用量SLURM
- 16. Windows 10でのメモリ使用量、CPU使用量、ディスク使用量を取得するUWP C#
- 17. Excel VBA - populatingバリアント配列がメモリ使用量を増やす
- 18. Docker Toolboxのディスク容量を増やす
- 19. Hadoopワーカーノードのディスク容量を増やす
- 20. 文字列の容量を増やす
- 21. プログラムでマイクゲインを増やす
- 22. Glassfish - 高いCPU使用量
- 23. CPU使用量とObject.wait
- 24. C#スレッドのCPU使用量を制限する
- 25. 値を一定量増やす
- 26. CフットプリントのメモリフットプリントとCPU使用量の見積もり
- 27. Win32 C++のDrawTextでメモリ使用量が増加する
- 28. HPUXでアプリケーションのCPUおよびメモリ使用量をプログラムで取得する
- 29. Android。 CPU使用量が多すぎる
- 30. UIViewの背景色を設定してメモリ使用量を増やす
空のループを追加しますか? – Flimzy
なぜ私はフォークボムを読んでいるのですか?.. – karlphillip
@karlphillip、私はフォーク爆弾を作っていたのですが、CPU消費はどうですか?私はそうではありませんが、もし私がそうであれば、私のプロセスはより少ないパワーを必要とします。私のプログラムは数字を生成するはずだから頼んでいる。また、私は何のために-1を得ましたか?私のゲストは目的に固有のものであり、品質の向上には非常に有用です。解決策を説明するものは何も見つかりませんでした。 – TimeCoder