0
这是一个比其他任何事情都更好奇的问题,但是说一个函数需要0.2434634秒才能完成它的工作,有没有一种方法可以访问这些信息并在我的代码中使用它?如何检索代码中的功能持续时间信息?
这是一个比其他任何事情都更好奇的问题,但是说一个函数需要0.2434634秒才能完成它的工作,有没有一种方法可以访问这些信息并在我的代码中使用它?如何检索代码中的功能持续时间信息?
您可以通过存储时间点之前函数调用测量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;
}
你可以*一次*,有没有其他的标准方法来得到一个函数的执行时间。但在计算帧率和其他与游戏和帧率有关的用途(或统计数据)之外,我不知道它应该用于什么。 –
@Someprogrammerdude它可能用于确定是否值得优化给定函数。 –
但是你是否要求特定的工具,库,方法?也许,在这种情况下,你还需要说出你的最终目标是什么。 – nbro