如何在C中找到代码的执行时间?
我找到了这个密码。如果我除以如何在C中找到代码的执行时间?,c,time,C,Time,我找到了这个密码。如果我除以(t2-t1)/CLOCK\u PER\u second,我会得到以秒为单位的时间吗?如何查找每秒时钟?有没有更好的方法来确定代码或函数的执行时间 #include<time.h> main() { clock_t t1=clock(); // Your code that takes more than 1 sec; clock_t t2=clock(); printf("The time taken is.. %g
(t2-t1)/CLOCK\u PER\u second
,我会得到以秒为单位的时间吗?如何查找每秒时钟?有没有更好的方法来确定代码或函数的执行时间
#include<time.h>
main()
{
clock_t t1=clock();
// Your code that takes more than 1 sec;
clock_t t2=clock();
printf("The time taken is.. %g ", (t2-t1));
..
#包括
main()
{
时钟t1=时钟();
//花费超过1秒的代码;
clock_t t2=clock();
printf(“所用时间为..%g”,(t2-t1));
..
您可以这样做:
#include <sys/time.h>
#include <time.h>
typedef struct timeval wallclock_t;
void wallclock_mark(wallclock_t *const tptr)
{
gettimeofday(tptr, NULL);
}
double wallclock_since(wallclock_t *const tptr)
{
struct timeval now;
gettimeofday(&now, NULL);
return difftime(now.tv_sec, tptr->tv_sec)
+ ((double)now.tv_usec - (double)tptr->tv_usec) / 1000000.0;
}
int main(void)
{
wallclock_t t;
double s;
wallclock_mark(&t);
/*
* Do something
*/
s = wallclock_since(&t);
printf("That took %.9f seconds wall clock time.\n", s);
return 0;
}
#包括
#包括
typedef struct timeval wallclock\t;
无效挂钟标记(挂钟*常数tptr)
{
gettimeofday(tptr,NULL);
}
双挂钟(挂钟*常数tptr)
{
现在构造timeval;
gettimeofday(&now,NULL);
返回difftime(now.tv_sec,tptr->tv_sec)
+((double)now.tv_usec-(double)tptr->tv_usec)/1000000.0;
}
内部主(空)
{
壁钟;
双s;
挂钟标志(t&t);
/*
*做点什么
*/
s=自(&t)起的wallclock_;
printf(“这花费了%.9f秒的挂钟时间。\n”,s);
返回0;
}
你可以在my中阅读更多内容。你能说为什么否决我的问题吗?它是
时钟每秒
而不是时钟每秒
,可以在time.h
中找到。请查看Ok thnx,但我认为此代码找不到实时。Gsamaras回答了它。但你没有要求“实时”。你的问题是“如何在C中查找代码的执行时间?"同样,如果我花30分钟解决一个问题,2小时购物,然后30分钟完成这个问题,我花了1小时,而不是3小时。你找不到C代码的执行时间,因为C代码从来没有执行过。C代码必须先编译。然后执行的是编译后的代码。执行时间取决于什么编译代码所针对的体系结构、使用的编译器和选项,以及运行编译代码时使用的确切处理器派生的确切配置。然后,根据执行历史记录(缓存和管道状态),执行时间仍可能有几个数量级的变化.更不用说中断了。基本上你的问题毫无意义。我知道@user3577378。顺便说一句,我没有投反对票,我投了反对票,因为这也是一开始就让我感到兴奋的事情。你可以比较这两段代码,因为我真的不记得告诉你。希望这有帮助。