在linux下,怎么统计一个代码段的执行时间
在linux下,如何统计一个代码段的执行时间
大家好,在这里请教各位朋友一个问题:
我原来有一个测试程序,用来统计某段代码的执行时间。原来的运行环境都是在Windows下,所以它一直运行的很好,但现在需要同时统计代码在linux下的运行时间。
请教各位朋友,在linux下,或者说标准的c/c++库中,有什么类似于GetTickCount()的函数?
ps:最好是在windows和linux下都通用的
谢谢!
代码如下:
//记录代码段执行时间
DWORD k = 0;
DWORD j = 0;
//记录开始时间
k = GetTickCount();
//被统计执行时间的代码
...
...
//记录结束时间
j = GetTickCount();
//显示被统计执行时间的代码段所耗费的时间,单位为秒
double dfTim = ( (double)(j - k) ) / 1000;
printf( "Tolal Time:%.9fs ", dfTim );
------解决方案--------------------
Linux下对时间进行运算,如果是到秒级的,相信大家都用过time之类的函数实现了,但要更精确些呢?到毫秒、微秒级呢?
看看下面这段源代码就明白了:
#include
#include
#include
void function()/*用来耗用一定的时间而已,无实际用处的函数*/
{
unsigned int i,j;
double y;
for(i=0;i <10000;i++)
for(j=0;j <10000;j++)
y=sin((double)i);
}
int main(int argc, char ** argv)
{
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:%f\n ",timeuse);
exit(0);
}
主要是用到了gettimeofday函数,函数里用到了这个结构:
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
------解决方案--------------------
GetTickCount() 级,用标准库的 time 就可以了吧。
------解决方案--------------------
我也是采用jixingzhong(瞌睡虫·星辰)的方法,统计数据库查询时间。
不过没办法在windows也兼容。
------解决方案--------------------
linux 下 不是 有 time 程序来测试 软件的运行时间的吗
------解决方案--------------------
gettimeofday对于多cpu是准确的,否则难道cpu数目上去了,系统时间就不准了么?反而gettickcount是否准确就要调查一下了.
------解决方案--------------------
使用毫秒级来计算,可以考虑使用clock()。
#include "time.h "
int main( void )
{
clock_t start, finish;
double usetime;
start = clock();
//这里写你测试程序
finish = clock();
usetime= (double)(finish - start) / CLOCKS_PER_SEC;
printf( "程序用时%f 秒\n ", usetime);
}
http://xingxinwang.blog.163.com/blog/static/19929240200707101249210
------解决方案--------------------
用time就可以了
大家好,在这里请教各位朋友一个问题:
我原来有一个测试程序,用来统计某段代码的执行时间。原来的运行环境都是在Windows下,所以它一直运行的很好,但现在需要同时统计代码在linux下的运行时间。
请教各位朋友,在linux下,或者说标准的c/c++库中,有什么类似于GetTickCount()的函数?
ps:最好是在windows和linux下都通用的
谢谢!
代码如下:
//记录代码段执行时间
DWORD k = 0;
DWORD j = 0;
//记录开始时间
k = GetTickCount();
//被统计执行时间的代码
...
...
//记录结束时间
j = GetTickCount();
//显示被统计执行时间的代码段所耗费的时间,单位为秒
double dfTim = ( (double)(j - k) ) / 1000;
printf( "Tolal Time:%.9fs ", dfTim );
------解决方案--------------------
Linux下对时间进行运算,如果是到秒级的,相信大家都用过time之类的函数实现了,但要更精确些呢?到毫秒、微秒级呢?
看看下面这段源代码就明白了:
#include
#include
#include
void function()/*用来耗用一定的时间而已,无实际用处的函数*/
{
unsigned int i,j;
double y;
for(i=0;i <10000;i++)
for(j=0;j <10000;j++)
y=sin((double)i);
}
int main(int argc, char ** argv)
{
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:%f\n ",timeuse);
exit(0);
}
主要是用到了gettimeofday函数,函数里用到了这个结构:
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
------解决方案--------------------
GetTickCount() 级,用标准库的 time 就可以了吧。
------解决方案--------------------
我也是采用jixingzhong(瞌睡虫·星辰)的方法,统计数据库查询时间。
不过没办法在windows也兼容。
------解决方案--------------------
linux 下 不是 有 time 程序来测试 软件的运行时间的吗
------解决方案--------------------
gettimeofday对于多cpu是准确的,否则难道cpu数目上去了,系统时间就不准了么?反而gettickcount是否准确就要调查一下了.
------解决方案--------------------
使用毫秒级来计算,可以考虑使用clock()。
#include "time.h "
int main( void )
{
clock_t start, finish;
double usetime;
start = clock();
//这里写你测试程序
finish = clock();
usetime= (double)(finish - start) / CLOCKS_PER_SEC;
printf( "程序用时%f 秒\n ", usetime);
}
http://xingxinwang.blog.163.com/blog/static/19929240200707101249210
------解决方案--------------------
用time就可以了