Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中找到代码的执行时间?_C_Time - Fatal编程技术网

如何在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。顺便说一句,我没有投反对票,我投了反对票,因为这也是一开始就让我感到兴奋的事情。你可以比较这两段代码,因为我真的不记得告诉你。希望这有帮助。