分析兩種算法的時間複雜度。如果它們看起來有競爭力,則
基準。
爲您的問題提供足夠大的輸入,以便時間不受其他-OS-開銷的影響。
開發兩個解決相同問題但程序不同的程序。
我有一些方法在Time measurements時間碼。例如:
#include <sys/time.h>
#include <time.h>
typedef struct timeval wallclock_t;
void wallclock_mark(wallclock_t *const tptr)
{
gettimeofday(tptr, NULL);
}
double wallclock_since(wallclock_t *const tptr)
{
struct timeval now;
gettimeofday(&now, NULL);
return difftime(now.tv_sec, tptr->tv_sec)
+ ((double)now.tv_usec - (double)tptr->tv_usec)/1000000.0;
}
int main(void)
{
wallclock_t t;
double s;
wallclock_mark(&t);
/*
* Solve the problem with Algorithm 1
*/
s = wallclock_since(&t);
printf("That took %.9f seconds wall clock time.\n", s);
return 0;
}
您將得到一個時間測量。然後,例如,使用「算法2」解決問題,並比較這些測量結果。 PS:或者您可以檢查每種方法的彙編代碼,以獲取更低級別的方法。
說實話,很難衡量這個低時間框架。我對測試人員的回覆非常感興趣,因爲測量哪一個更好是相當直接的(寫下每次執行後的時間和1000000次操作的平均值),但這不會給你準確的執行時間,而是哪個更快平均。但是,如何準確執行時間對我來說也是一個謎。 –
@安特 - 如果差異太小而無法衡量,爲什麼我們首先關心? –
執行時間!=適合目的 –