问题描述
- UNIX环境高级编程 times() 疑问
-
- 例程
int main(int argc, char *argv[]) { clock_t s_clk,e_clk; struct tms s_tms,e_tms; s_clk = times(&s_tms); system("ls /dev"); system("date"); sleep(1); e_clk = times(&e_tms); printf("e_clk %ld - s_clk %ld = %ld ",e_clk , s_clk,e_clk-s_clk); // pr_time(1,s_tms,e_tms); printf("user time e_tms %ld - s_tms %ld = %ld ", e_tms.tms_utime,s_tms.tms_stime,(e_tms.tms_utime - s_tms.tms_utime)); printf("system time e_tms %ld - s_tms %ld = %ld ", e_tms.tms_stime,s_tms.tms_stime,(e_tms.tms_stime - s_tms.tms_stime)); return 0; } ./a.out 2016年 04月 03日 星期日 15:40:10 CST e_clk 1742131978 - s_clk 1742131878 = 100 user time e_tms 0 - s_tms 0 = 0 system time e_tms 0 - s_tms 0 = 0
时间差为什么还是 0.
解决方案
楼主要不sleep久一点试试。
如果一个进程 的运行时间很短,短到和系统的计时器间隔一个数量级,用这种方法测出来的结果必然是不够精确的,头尾都有误差。
解决方案二:
UNIX环境高级编程----文件属性及权限
时间: 2024-12-03 06:41:27