2017-07-31 72 views
0

这是一个比其他任何事情都更好奇的问题,但是说一个函数需要0.2434634秒才能完成它的工作,有没有一种方法可以访问这些信息并在我的代码中使用它?如何检索代码中的功能持续时间信息?

+2

你可以*一次*,有没有其他的标准方法来得到一个函数的执行时间。但在计算帧率和其他与游戏和帧率有关的用途(或统计数据)之外,我不知道它应该用于什么。 –

+0

@Someprogrammerdude它可能用于确定是否值得优化给定函数。 –

+0

但是你是否要求特定的工具,库,方法?也许,在这种情况下,你还需要说出你的最终目标是什么。 – nbro

回答

1

您可以通过存储时间点之前函数调用测量ealpsed时间后函数调用从时间点减去它。随着对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; 
}