C++のctimeヘッダのclock関数から得られる値が予想と違った値になる
C++初心者です。
下のソースコードは独習C++ 第4版の第2章例2.1の3にデバッグ用にcoutをいくつか足したものです。
timer型オブジェクトの作成から破棄までの時間を計測しています。
実行から1秒以上経過したあとにエンターキーを押してもclock関数から得られる値が予想と違ったものになっており、正しい経過時間を計算することができません。
予想としては end-start の値がCLOCKS_PER_SEC(1000000)の値より大きくなると思うのですが、実行してみるとendの値が3526、startの値が3402となっており、全く違ったものになります。
初歩的な質問であると思いますが、ご教授お願い致します。
#include <iostream>
#include <ctime>
using namespace std;
class timer {
clock_t start;
public:
timer();
~timer();
};
timer::timer() {
start = clock();
cout << "start:" << start << "\n";
}
timer::~timer() {
clock_t end;
end = clock();
cout << "end:" << end << "\n";
cout << "経過時間:" << (end - start) / CLOCKS_PER_SEC << "\n";
cout << "CLOCKS_PER_SEC:" << CLOCKS_PER_SEC << "\n";
}
int main() {
timer ob;
char c;
cout << "最後がエンターになるようにキーを入力:";
cin >> c;
return 0;
}
実行結果
start:3402
最後がエンターになるようにキーを入力:1234
end:3526
経過時間:0
CLOCKS_PER_SEC:1000000
環境
$ g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr ->-with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/D>eveloper/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
hread model: posix