C语言中获取时间记录

最近在网络上找了一个CPU和GPU矩阵乘法对比的demo(http://www.cnblogs.com/stormhan/p/5467187.html
在Linux中运行,一直报错
error: identifier "GetTickCount" is undefined
这是因为GetTickCount是Windows中的函数,需要引入头文件windows.h,当然,在Linux中这种方法并不适用。这就需要我们了解GetTickCount的作用,找到Windows中GetTickCount()在Linux中的替代函数。

经过查询得到,GetTickCount是记录时间的,返回自设备启动后的毫秒数,用法为

 Start:=GetTickCount;   
 ...//执行耗时的操作   
 Stop:=GetTickCount;   
 TimeUsed:=(Stop-Start)/1000;     //使用了xxx秒

(参考http://www.cnblogs.com/jxsoft/archive/2011/10/17/2215366.html

这就需要找到Linux中记录时间的方法。C语言中有多种方法可以实现,例如clock()、times()、clock_gettime()、gettimofday(),但是不同方法是有差别的
clock()函数的精确度是10毫秒(ms)
times()函数的精确度是10毫秒(ms)
gettimofday()函数的精确度是微秒(μs)
clock_gettime()函数的计量单位为十亿分之一,也就是纳秒(ns)
参考http://www.cnblogs.com/krythur/archive/2013/02/25/2932647.html

我使用的方法是clock_gettime(),用法为

struct timespec tpstart;
struct timespec tpend;
long timedif;

//unsigned int tick1 = GetTickCount();
clock_gettime(CLOCK_MONOTONIC, &tpstart);
...//执行耗时的操作   
clock_gettime(CLOCK_MONOTONIC, &tpend);
timedif = 1000*(tpend.tv_sec - tpstart.tv_sec) + (tpend.tv_nsec - tpstart.tv_nsec)/1000000;
printf("use time : %ldms\n",timedif);
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值