星期五, 五月 11, 2007

程序运行时间的函数

前几天一直用c语言下的clock()这个函数来计算串行和并行程序运行的时间,发现当运行的时间比较少的时候,串行clock计算的时间是正确的,但是当运行的时间比较长的时候(比如几个小时的时候),发现相减的结果有时候是负数,有时候即使不是负数,但是结果也是肯定不对的,Google了一下,没有找到原有,难道是溢出造成的?奇怪!
然后下午只能用其他的函数来计算程序运行的时间,突然发现用clock来计算并行程序运行的时间的时候,得倒的结果也是错误的,唉,郁闷呀,好了好几天测的结果都得重新测试了。
下面记录一下linux下这个计算程序结果的方法,经过测试发现,这个方法不仅可以用在串行算法中,用在并行算法中得倒的结果也是正确的。下面就是用这个方法测试程序结果的一个实例:
首先是这个方法的函数和数据结果
#include
int gettimeofday(struct timeval *tv,struct timezone *tz);
strut timeval
{ long tv_sec; /* 秒数 */
long tv_usec; /* 微秒数 */
};
下面就是实例:
gettimeofday将时间保存在结构tv之中.tz一般我们使用NULL来代替.
#include
#include
#include
void function()
{
unsigned int i,j;
double y;
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
y=sin((double)i);
}
main()
{
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL);
function(); gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+ tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%fn",timeuse);
exit(0);
}

没有评论: