我正在使用以下代碼來計算以毫秒爲單位的執行時間。以毫微秒爲單位的執行時間和相關問題
struct timespec tp;
if (clock_gettime (CLOCK_REALTIME, &tp) == 0)
return ((tp.tv_sec * 1000000000) + tp.tv_nsec);
else
return ;
您能否告訴我這是否正確? 讓我們命名這個函數comptime_nano()。
現在,我在main()中編寫以下代碼來檢查以下操作的執行時間。
unsigned long int a, b, s1, s3;
a = (unsigned long int)(1) << 63;
b = (unsigned long int)(1) << 63;
btime = comptime_nano();
s1 = b >> 30;
atime = comptime_nano();
printf ("Time =%ld for %lu\n", (atime - btime), s1);
btime = comptime_nano();
s3 = a >> 1;
atime = comptime_nano();
printf ("Time =%ld for %lu\n", (atime - btime), s3);
令我驚訝的是,第一操作大約需要大約4倍的時間比第二。再一次,如果我改變這些操作的相對順序,各自的時序變化很大。
請評論...
什麼,你想測量執行* single * shift所需的時間? – 2010-05-27 11:34:46
+1過於苛刻以至於沒有投票,我們都是初學者。 – 2010-05-27 11:40:49