作者Issac89467 (Issac)
看板C_and_CPP
标题[问题] RDTSC用法?
时间Mon Oct 19 02:08:17 2009
<第一次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
1F:→ Issac89467:附注一下:我用的是Borland C++ 10/19 02:24
2F:推 littleshan:cycle.h 显然不支援你的 compiler 10/19 10:46
3F:→ Issac89467:也就是说我无法使用cycle.h? 10/19 11:48
4F:→ Issac89467:我有用过time(),但它显示得好像不是CPU时间 10/19 11:49
5F:→ Issac89467:同样的程式每次运作时间都不一样= = 10/19 11:50
6F:→ james732:time()回传的是从1970/1/1到现在所过的秒数 10/19 12:03
7F:→ Issac89467:如果要计算程式所花CPU的运作时间,还有其他办法吗? 10/19 13:00
8F:→ james732:呼叫两次 time 取差值 10/19 13:07
9F:推 VictorTom:原来有time()可以用, 以前小弟都只会用clock()....Orz 10/19 13:11
10F:→ MOONRAKER:可以直接使用time指令 XD windows可以装cygwin 10/19 14:46
11F:→ Issac89467:如果用time()取差值,会不会不是CPU对程式的运作时间? 10/19 14:54
12F:→ Issac89467:CPU应该不会只为这个程式运作吧...其实我不太了 10/19 14:55
13F:→ Issac89467:我是希望不要在拟用linux的环境,因为我跟linux也不熟 10/19 14:57
14F:→ Issac89467:我很麻烦...还请大家见谅 10/19 14:58
15F:→ james732:要取得CPU花掉的时间 这种事应该要问OS罗? 10/19 15:33
16F:→ MOONRAKER:time()以OS内建的机制取得CPU time,并分为kernel time 10/19 19:56
17F:→ MOONRAKER:和user time,看程式执行在user/kernel space花的时间 10/19 19:56
18F:→ MOONRAKER:而定。还有其他记忆体相关的数据。 10/19 19:57