返回信息流碰到这样一个问题,需要计算两个事件(可以认为是两次按同一个按钮)之间的时间,要求精确到0.01s,待统计的时间典型值在20-40秒之间
目前的困难如下:
1. 使用time_t 存储时间和time()获得时间,可以得到精确到秒的结果,精确度不够;
2. 使用clock()和clock_t, 只能统计当前进程的时间,例如
clock_t start = clock();
sleep(3);
clock_t end = clock();
这种情况下end和start的值都是0
而我的程序中也存在类似情况,GTK+写的界面,回调函数绑定在GtkButton的activate信号上,每次我设置完开始时间后,程序就等待用户输入,从目前的结果看,等待用户点按钮的时间没有被clock()函数计算进来
各位有什么建议?
这是一条镜像帖。来源:北邮人论坛 / cpp / #16684同步于 2008/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[请教]Linux下C语言中的精确计时
fengyunxiao
2008/11/26镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
【 在 fengyunxiao (风云笑) 的大作中提到: 】
: 标 题: [请教]Linux下C语言中的精确计时
: 发信站: 北邮人论坛 (Wed Nov 26 11:17:16 2008), 站内
:
: 碰到这样一个问题,需要计算两个事件(可以认为是两次按同一个按钮)之间的时间,要求精确到0.01s,待统计的时间典型值在20-40秒之间
精确到10ms? 一般Linux的时钟中断是每秒100次,即精确到10ms,但中断处理的大部分功能可能会被推后数十ms执行...
:
: 目前的困难如下:
: 1. 使用time_t 存储时间和time()获得时间,可以得到精确到秒的结果,精确度不够
gettimeofday可能精确到毫秒或10毫秒,看内核的配置了
;
: 2. 使用clock()和clock_t, 只能统计当前进程的时间,例如
: clock_t start = clock();
: sleep(3);
: clock_t end = clock();
: 这种情况下end和start的值都是0
: 而我的程序中也存在类似情况,GTK+写的界面,回调函数绑定在GtkButton的activate信号上,每次我设置完开始时间后,程序就等待用户输入,从目前的结果看,等待用户点按钮的时间没有被clock()函数计算进来
:
: 各位有什么建议?
: --
: Whatever you do, wherever you go, I'll be right here waiting for you.
:
: ※ 来源:·北邮人论坛 http://forum.byr.edu.cn·[FROM: 172.28.189.*]
【 在 sunway 的大作中提到: 】
: 精确到10ms? 一般Linux的时钟中断是每秒100次,即精确到10ms,但中断处理的大部分功能可能会被推后数十ms执行...
: gettimeofday可能精确到毫秒或10毫秒,看内核的配置了
: ;
gettimeofday() 解决了,多谢指点