c++ - clock cycle count wth GCC - Stack Overflowに書いてあるコードをそのまま試してみました。環境はWindows 7 + Cygwin + g++ 4.8.2です。
#include <iostream> #ifdef __i386 __inline__ uint64_t rdtsc() { uint64_t x; __asm__ volatile ("rdtsc" : "=A" (x)); return x; } #elif __amd64 __inline__ uint64_t rdtsc() { uint64_t a, d; __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d)); return (d<<32) | a; } #endif #include <iostream> using namespace std; int main(){ uint64_t t; t = rdtsc(); int sum = 0; for(int i = 0; i < 10000; ++i) { sum += i; } t = rdtsc() - t; cout << "t = " << t << endl; return 0; }
ビルドコマンドは以下です。
$ g++ gcc_cpu_clock.cpp
結果は以下の通りです。実行するたび値は変わります。18万近い値になることもあります。
$ ./a.exe t = 59654