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