我在网上搜索过但我只找到了一种方法,但是这样它就会以秒为单位而不是几毫秒.
我的代码是:
#include <stdio.h> #include <assert.h> #include <time.h> int main(void) { int solucion; time_t start,stop; clock_t ticks; long count; time(&start); solucion = divisores_it(92000000,2); time(&stop); printf("Finnished in %f seconds. \n",difftime(stop,start)); return 0; }
解决方法
跨平台的方式是使用ftime.
Windows特定链接:http://msdn.microsoft.com/en-us/library/aa297926(v=vs.60).aspx
以下示例.
#include <stdio.h> #include <sys\timeb.h> int main() { struct timeb start,end; int diff; int i = 0; ftime(&start); while(i++ < 999) { /* do something which takes some time */ printf("."); } ftime(&end); diff = (int) (1000.0 * (end.time - start.time) + (end.millitm - start.millitm)); printf("\nOperation took %u milliseconds\n",diff); return 0; }
我运行上面的代码并使用VS2008跟踪它,并看到它实际上调用了Windows GetSystemTimeAsFileTime函数.
无论如何,ftime会给你几毫秒的精度.