[問題] RDTSC用法?

看板C_and_CPP (C/C++)作者 (Issac)時間16年前 (2009/10/19 02:08), 編輯推噓2(2016)
留言18則, 5人參與, 最新討論串1/1
<第一次PO文還請見諒> 我有爬了一下關於RDTSC的用法 但是自己寫了以後還是發生了一些問題 還請高手幫幫忙 以下是精簡程式 #include <cycle.h> int main() { double t_elapsed=0.0; ticks t0=getticks(); ........... 程式區段 ........... ticks t1=getticks(); t_elapsed=elapsed(t1,t0); cout << "T=" << t_elapsed << endl; getch(); return 0; } compile後出現慘烈結果: 1. ticks,t1,t0 --> 尚未定義 2. ticks t0, ticks t1 --> statement missing 3. t_elapsed=elapsed(t1,t0) --> call to undefined function 'elpsed' 本身又是程式新手,還請大家能指導一下 另外,cout的變數(t_elapsed)應該沒有錯吧...? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.99.80.30

10/19 02:24, , 1F
附註一下:我用的是Borland C++
10/19 02:24, 1F

10/19 10:46, , 2F
cycle.h 顯然不支援你的 compiler
10/19 10:46, 2F

10/19 11:48, , 3F
也就是說我無法使用cycle.h?
10/19 11:48, 3F

10/19 11:49, , 4F
我有用過time(),但它顯示得好像不是CPU時間
10/19 11:49, 4F

10/19 11:50, , 5F
同樣的程式每次運作時間都不一樣= =
10/19 11:50, 5F

10/19 12:03, , 6F
time()回傳的是從1970/1/1到現在所過的秒數
10/19 12:03, 6F

10/19 13:00, , 7F
如果要計算程式所花CPU的運作時間,還有其他辦法嗎?
10/19 13:00, 7F

10/19 13:07, , 8F
呼叫兩次 time 取差值
10/19 13:07, 8F

10/19 13:11, , 9F
原來有time()可以用, 以前小弟都只會用clock()....Orz
10/19 13:11, 9F

10/19 14:46, , 10F
可以直接使用time指令 XD windows可以裝cygwin
10/19 14:46, 10F

10/19 14:54, , 11F
如果用time()取差值,會不會不是CPU對程式的運作時間?
10/19 14:54, 11F

10/19 14:55, , 12F
CPU應該不會只為這個程式運作吧...其實我不太瞭
10/19 14:55, 12F

10/19 14:57, , 13F
我是希望不要在擬用linux的環境,因為我跟linux也不熟
10/19 14:57, 13F

10/19 14:58, , 14F
我很麻煩...還請大家見諒
10/19 14:58, 14F

10/19 15:33, , 15F
要取得CPU花掉的時間 這種事應該要問OS囉?
10/19 15:33, 15F

10/19 19:56, , 16F
time()以OS內建的機制取得CPU time,並分為kernel time
10/19 19:56, 16F

10/19 19:56, , 17F
和user time,看程式執行在user/kernel space花的時間
10/19 19:56, 17F

10/19 19:57, , 18F
而定。還有其他記憶體相關的數據。
10/19 19:57, 18F
文章代碼(AID): #1AsrcK35 (C_and_CPP)
文章代碼(AID): #1AsrcK35 (C_and_CPP)