我正在尝试测量我的程序在循环中执行多个操作所花费的时间,整个程序用C语言编写。我正在使用这篇文章中的方法:
C# vs C - Big performance difference
但是,当我尝试使用那个方法时,在clock()的声明行上,我收到一个错误:在函数main中不正确地使用了typedef符号。
包含头文件,不会导致任何错误。这是一个用于MS-DOS的TurboC编译器编写的16位C程序。我不确定它使用的是哪个版本的C,但我认为它最有可能是C89或C的早期版本之一。我不知道这是否会导致语法差异?
这是我正在使用的代码:
clock_t start = clock();
while(count < 10000)
{
count++;
}
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);
错误与我上面提到的完全一样。
答案 0 :(得分:2)
在旧的16位C中,您可能应该使用time_t和time()函数。从大约发明电子邮件开始,它们就被用于此目的。
如果你这样做,你的代码将在2038年的某个时候死于可怕的死亡。的 http://en.wikipedia.org/wiki/Year_2038_problem 强>
#include <time.h>
time_t start = time();
/* do a bunch of stuff */
time_t stop = time();
unsigned long int elapsedSeconds = stop - start;
如果使用time_t
声明出现问题,请尝试使用unsigned long int
。