0

ただし、次を使用する場合は、C++プログラムにかかる時間を測定したいと思います。

time_t begin, end;
time_t(&begin);
func(); //my function...it contains the code whose elapsed time I want to measure
time(&end);
cout<<"\n Time elapsed:"<<difftime(end, begin) <<" seconds"<<endl;

私が取得している経過時間は0秒です。

また、私の場合、gprofは、プログラムで必要とされる量のメモリを割り当てることができないことを示しているため、機能しません。

私のプログラムに必要な時間を測定する他の方法はありますか?Valgrindのmassifツールはスナップショットにかかった時間を表示しますが、ドキュメントにはミリ秒単位かマイクロ秒単位かは記載されていません。

適切な方法を提案してください。

ミリ秒単位で時間を測定できたらいいですね。

4

3 に答える 3

0

1つの可能性は、プログラムを自分で作成することです(CreateProcessWindows、forkUnixライクなシステム)。次に、子が終了するのを待ちます(WaitForSingleObjectWindows、waitpidUnixの場合)。最後に、子プロセスの時間を取得します(GetProcessTimesWindows、timesUnixの場合)。

これにより、時間がミリ秒単位で示され、壁時間とCPU時間が分離されます。後者は、同じシステムで他のものを同時に実行している場合に特に便利です(静止システムを使用すると精度が向上しますが、適度に近くにとどまることができます)。

于 2012-07-02T03:15:43.100 に答える
0

以下に示すようにコードを使用できます。

clock_t start = clock();     
 // Code here...
clock_t ticks = clock()-start;     
std::cout << "Time Taken:" << (double)ticks/CLOCKS_PER_SEC << "\n"; 
于 2012-07-02T02:24:44.960 に答える
0

std::chrono を使用します。
http://en.cppreference.com/w/cpp/chrono/duration

Facebook のベンチマーク ユーティリティも参照してください。
https://github.com/facebook/folly/blob/master/folly/docs/Benchmark.md

于 2012-07-02T02:34:48.133 に答える