BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #16684同步于 2008/11/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[请教]Linux下C语言中的精确计时

fengyunxiao
2008/11/26镜像同步2 回复
碰到这样一个问题,需要计算两个事件(可以认为是两次按同一个按钮)之间的时间,要求精确到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()函数计算进来 各位有什么建议?
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
sunway机器人#1 · 2008/11/26
【 在 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.*]
fengyunxiao机器人#2 · 2008/11/26
【 在 sunway 的大作中提到: 】 : 精确到10ms? 一般Linux的时钟中断是每秒100次,即精确到10ms,但中断处理的大部分功能可能会被推后数十ms执行... : gettimeofday可能精确到毫秒或10毫秒,看内核的配置了 : ; gettimeofday() 解决了,多谢指点