可以說我想測量一個特定函數的總時間。現在這個函數調用其他函數(f1和f2)。所以我想計算f1和f2的總時間。如何在clock_getime內clock_gettime?
我所期待的是f total time = f1 total time + f2 total time
void f(){
struct timespec total_start, total_end;
struct timespec f1_start, f1_end;
struct timespec f2_start, f2_end;
clock_gettime(CLOCK_MONOTONIC, &total_start);
clock_gettime(CLOCK_MONOTONIC, &f1_start);
f1();
clock_gettime(CLOCK_MONOTONIC, &f1_end);
clock_gettime(CLOCK_MONOTONIC, &f2_start);
f2();
clock_gettime(CLOCK_MONOTONIC, &f2_end);
clock_gettime(CLOCK_MONOTONIC, &total_end);
f_total_time = (total_end.tv_sec - total_start.tv_sec) + (total_end.tv_nsec - total_start.tv_nsec)/1e9 ;
f1_total_time = (f1_end.tv_sec - f1_start.tv_sec) + (f1_end.tv_nsec - f1_start.tv_nsec)/1e9 ;
f2_total_time = (f2_end.tv_sec - f2_start.tv_sec) + (f2_end.tv_nsec - f2_start.tv_nsec)/1e9 ;
}
我的問題是,這是衡量的內部函數功能時的正確道路。
問題:我面臨的問題是F1和F2的總時間並沒有增加至F的總時間。即f total time != f1 total time + f2 total time
真正發生的f total time > f1 total time + f2 total time
我做錯什麼了嗎?
這需要一點時間來調用'clock_gettime',所以很自然的總時間超過時間各個功能調用。沒有什麼不對。如果你想避免這種情況,只需自己添加函數時間:*計算函數時間後,'f_total_time = f1_total_time + f2_total_time;'。 –
你使用的是C++嗎? –
沒有那是正確的,但調用'clock_gettime'需要時間! –