実行時に特定のプログラムが使用した時間とメモリを計算するにはどうすればよいですか?
私はC++の初心者です。私は自分の質問に対して多くの回答とさまざまなコードを見てきましたが、それらのすべてが理解できません..これを行う簡単な方法はありますか?
また、もっと複雑な方法がある場合は、説明を含めてください。
ありがとう。
実行時に特定のプログラムが使用した時間とメモリを計算するにはどうすればよいですか?
私はC++の初心者です。私は自分の質問に対して多くの回答とさまざまなコードを見てきましたが、それらのすべてが理解できません..これを行う簡単な方法はありますか?
また、もっと複雑な方法がある場合は、説明を含めてください。
ありがとう。
任意のプログラムを実際に実行せずに、どのくらいの時間がかかるかを教えてくれる一般化されたツールは今のところありません (今後もありません) 。これは、熟考するのに楽しい CS の概念です。
http://en.wikipedia.org/wiki/Halting_problem
要するに、プログラムの実行にかかる時間は、かなり制約があり数学的に厳密な環境で操作していない限り、事前に知ることはできず、特定の保証を提供するシステムでコードを適切にスタイル化していません。
http://en.wikipedia.org/wiki/Real-time_operating_system
経験があれば、データ構造のサイズとその数を調べることで、プログラムのメモリ フットプリントの規模をある程度見積もることができます。C++ オペレーターsizeof
は、個々のオブジェクトが消費する具体的なバイト数を判断するのに役立ちますが、舞台裏で「簿記」に使用されるメモリの量については何も教えてくれません。
しかし、繰り返しになりますが、ほとんどの場合、実行してプロセス モニターを使用して何が起こるかを確認するだけです。予測するのは難しいため、実際に何が起こるかを経験的に調べるだけです。
プロセスごとの CPU とメモリの使用状況の追跡(Windows)
Windows を使用している場合、組み込みの Windows タスク マネージャーの [プロセス] タブにメモリ使用量が表示されます。同様に、Mac OSX にはメモリ使用量を表示する「Activity Monitor」があります。プログラムの状態が変化し、メモリの割り当て/割り当て解除が行われると、プログラム内の数値がリアルタイムで変化します。
実行時間の測定については、タイマー関数を使用して実行前後の現在のシステム時間を取得し、計算するだけです。
Windows ではQueryPerformanceCounterとQueryPerformanceFrequency、Mac/Linux マシンではgettimeofdayです。
アプリケーションに関するより具体的なパフォーマンス関連の情報が必要な場合は、 AMD CodeAnalystなどのプロファイリング アプリを使用すると、主要なボトルネックがどこにあるかを見つけることができます。