C++計時方法,我試圖讓我的程序自定時的,我知道使用的getrusage較低SYS時間
truct rusage startu; struct rusage endu;
getrusage(RUSAGE_SELF, &startu);
//Do computation here
getrusage(RUSAGE_SELF, &endu);
double start_sec = start.ru_utime.tv_sec + startu.ru_utime.tv_usec/1000000.0;
double end_sec = endu.ru_utime.tv_sec + endu.ru_utime.tv_usec/1000000.0;
double duration = end_sec - start_sec;
這取一個程序段的用戶時間兩種方法
1)。使用時鐘(),用於獲取所述處理器的執行時間
double start_sec = (double)clock()/CLOCKS_PER_SEC;
//Do computation here
double end_sec = (double)clock()/CLOCKS_PER_SEC;
double duration = end_sec - start_sec;
這取一個程序段的實時
2)。
但是,這兩種方法的系統時間都很長。用戶時間也比沒有這些時間長。系統時間有時甚至會使用戶時間增加一倍。
例如,我正在做旅行推銷員問題,對於用戶和實時正常運行約3秒的輸入,這兩個時間都使用戶時間超過5秒,實時超過15秒,這意味着系統時間長達10秒左右。
我希望知道是否有改進方法或其他可以縮短系統時間和用戶時間的庫。如果我必須使用其他庫,我需要用於用戶時間計時和實時計時的庫。
感謝您的任何建議!
你是否在緊密循環中調用你的分析代碼? –
@MarkB是的,我有一個連續調用的回溯遞歸,通過向量執行迭代。 – ljhljh235