分析两种算法的时间复杂度。如果它们看起来有竞争力,则
基准。
为您的问题提供足够大的输入,以便时间不受其他-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次操作的平均值),但这不会给你准确的执行时间,而是哪个更快平均。但是,如何准确执行时间对我来说也是一个谜。 –
@安特 - 如果差异太小而无法衡量,为什么我们首先关心? –
执行时间!=适合目的 –