代码之家  ›  专栏  ›  技术社区  ›  Kyu96

以C为单位测量运行时间?

  •  2
  • Kyu96  · 技术社区  · 4 年前

    所以, 最初,我有这个:

    clock_t begin = clock();
    my_function();
    clock_t end = clock();
    double time_spent = (double)(end - begin);
    

    1. 它只测量cpu处理应用程序所用的时间。

    2 回复  |  直到 4 年前
        1
  •  3
  •   chqrlie    4 年前

    C标准并没有定义一种可移植的方法来实现这一点。这个 time() 库函数的定义为1秒,这不适合您的用途。正如@Puck提到的,C11确实引入了 timespec_get() 检索精确的时间值,但此函数不受广泛支持,并且可能无法提供预期的精度。

    POSIX标准定义 gettimeofday() clock_gettime() 它可以返回精确的实时参数 CLOCK_REALTIME .

    其他功能在所选系统上可用:

    不过,请注意,执行精确可靠的亚微秒级基准测试至少是一个困难的游戏。

        2
  •  4
  •   Puck    4 年前

    所以,你应该问问自己你是否真的需要纳秒级。一种以千兆赫(GHz)顺序运行的处理器,这意味着一条指令的执行时间为纳秒。这意味着纳秒精度的测量非常复杂(如果不是不可能的话)。

    timespec_get C11可以获得纳秒分辨率的时间,但它肯定不是那么精确。