如何在代码中检索函数持续时间信息?

时间:2017-07-31 09:23:58

标签: c

这更像是一个好奇心问题而不是其他任何东西,但是说一个函数需要0.2434634秒来完成它的事情是否有办法我可以访问这些信息并在我的代码中使用它?

1 个答案:

答案 0 :(得分:1)

您可以通过在函数调用之前存储时间点来测量消失时间,并在函数调用之后从时间点中减去它。在POSIX系统上具有高精度,可以通过clock_gettime功能实现:

#include <stdio.h>
#include <time.h>

void foo() {
    sleep(1);
}

double to_milli(struct timespec* ts) {
    return (1.0e3 * ts->tv_sec) + (1.0e-6 * ts->tv_nsec);
}

int main() {
    struct timespec tp_begin, tp_end;

    clock_gettime(CLOCK_MONOTONIC, &tp_begin);
    foo(); /* call the desired function */
    clock_gettime(CLOCK_MONOTONIC, &tp_end);

    printf("Elapsed time: %.5f ms\n", to_milli(&tp_end) - to_milli(&tp_begin));
    return 0;
}