【问题标题】:gettimeofday difference not giving me a time rangegettimeofday 差异没有给我一个时间范围
【发布时间】:2013-02-06 06:35:38
【问题描述】:

我正在用 c 编写一些基本的东西,计算执行 shell 脚本所需的时间。

我有

gettimeofday(&start, NULL);
// code here

gettimeofday(&end, NULL);
// print end - start

我知道 timeval 结构有 tv_sec 和 tv_usec ,但即使对于诸如“sleep 3”之类的脚本,我仍然得到 0 结束 - 开始差异。任何猜测为什么?

【问题讨论】:

    标签: c time


    【解决方案1】:

    您应该阅读以下内容:gettimeofday() should never be used to measure time

    改用clock_gettime(CLOCK_MONOTONIC, ...)

    【讨论】:

    • 你是对的:在严肃的软件开发者中必须这样做。我的方法只是为了方便自用。
    【解决方案2】:

    试试这个:

    double dtime(){
        double t;
        struct timeval tv;
        gettimeofday(&tv, NULL);
        t = tv.tv_sec + ((double)tv.tv_usec)/1e6;
        return t;
    }
    
    …
    double t0 = dtime();
    …
    printf("Time spend: %g seconds\n", dtime()-t0);
    

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 2013-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 2021-07-29
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      相关资源
      最近更新 更多