だから私は std::chrono::high_resolution_clock を使用して、何かの実行にかかる時間を計ろうとしていました。開始時間と終了時間の違いを見つけることができると思いました...
私のアプローチが機能することを確認するために、次のプログラムを作成しました。
#include <iostream>
#include <chrono>
#include <vector>
void long_function();
int main()
{
std::chrono::high_resolution_clock timer;
auto start_time = timer.now();
long_function();
auto end_time = timer.now();
auto diff_millis = std::chrono::duration_cast<std::chrono::duration<int, std::milli>>(end_time - start_time);
std::cout << "It took " << diff_millis.count() << "ms" << std::endl;
return 0;
}
void long_function()
{
//Should take a while to execute.
//This is calculating the first 100 million
//fib numbers and storing them in a vector.
//Well, it doesn't actually, because it
//overflows very quickly, but the point is it
//should take a few seconds to execute.
std::vector<unsigned long> numbers;
numbers.push_back(1);
numbers.push_back(1);
for(int i = 2; i < 100000000; i++)
{
numbers.push_back(numbers[i-2] + numbers[i-1]);
}
}
問題は、明らかに実際にはそうではないのに、正確に 3000ms を出力することです。
短い問題では、0ms を出力するだけです...何が間違っていますか?
編集:それが役に立たない場合は、-std=c++0x フラグをオンにして GNU GCC コンパイラを使用しています。