clock()在C中返回负值

pyl*_*ner 3 c clock time-t time.h

我使用一个非常简单的代码来衡量执行时间.它运行良好,直到我不确定可能不会超过20分钟.但是(> 20分钟后)它返回负面结果.我在整个论坛搜索尝试了一切,比如更改数据类型,使用long unsigned(返回0)但再次失败.以下是我的代码片段

main()
{
    time_t start,stop;
    double time_arm;
    start = clock(); 
    /* .......  */
    stop = clock();
    time_arm=(double)(stop-start)/(double)CLOCKS_PER_SEC;

    printf("Time Taken by ARM only is %lf \n",time_arm);
}
Run Code Online (Sandbox Code Playgroud)

输出是ARM的时间仅为-2055.367296

任何帮助表示赞赏,提前谢谢.

Car*_*rum 6

POSIX要求CLOCKS_PER_SEC为1,000,000.这意味着你的计数是以微秒为单位 - 而2 31微秒约为35分钟.您的计时器刚刚溢出,因此当发生这种情况时您无法获得有意义的结果.

为什么你在20分钟看到问题,我不确定 - 也许你CLOCKS_PER_SEC的POSIX不兼容.无论如何,你的问题是计时器溢出.你需要以不同的方式处理这个问题 - 或许要研究一下getrusage(2).