在C语言中插入计时程序,可以使用以下几种方法:
使用 `clock()` 函数
`clock()` 函数返回从程序开始执行到调用该函数所经过的CPU时钟周期数。为了得到以秒为单位的时间,需要将返回值除以 `CLOCKS_PER_SEC`,该常量表示每秒的时钟周期数(通常为1000000)。
示例代码:
```c
include include int main() { clock_t start, end; double execution_time; start = clock(); // 记录开始时间 // 这里是需要计时的代码 end = clock(); // 记录结束时间 execution_time = (double)(end - start) / CLOCKS_PER_SEC; // 计算执行时间(单位:秒) printf("程序执行时间: %f 秒 ", execution_time); return 0; } ``` `time()` 函数返回当前时间(自1970年1月1日00:00:00以来的秒数),`difftime()` 函数计算两个 `time_t` 类型时间之间的差值(以秒为单位)。 示例代码: ```c include include int main() { time_t start, end; double execution_time; start = time(NULL); // 获取开始时间 // 这里是需要计时的代码 end = time(NULL); // 获取结束时间 execution_time = difftime(end, start); // 计算执行时间(单位:秒) printf("程序执行时间: %f 秒 ", execution_time); return 0; } ``` `gettimeofday()` 函数返回当前时间(以秒和微秒为单位),通常用于更精确的计时。 示例代码: ```c include include int main() { struct timeval start, end; long elapsed_time; gettimeofday(&start, NULL); // 获取起始时间 // 这里是需要计时的代码 gettimeofday(&end, NULL); // 获取结束时间 elapsed_time = (end.tv_sec - start.tv_sec) * 1000 + (end.tv_usec - start.tv_usec) / 1000; printf("程序执行时间: %ld 秒 ", elapsed_time); return 0; } ``` 使用 `QueryPerformanceCounter()` 和 `QueryPerformanceFrequency()` 函数(适用于Windows平台): 这两个函数用于获取高精度计时器的计数和频率,适用于需要极高精度计时的场合。 示例代码: ```c include include int main() { LARGE_INTEGER start, end, frequency; double execution_time; QueryPerformanceFrequency(&frequency); // 获取计时器频率 QueryPerformanceCounter(&start); // 获取起始时间 // 这里是需要计时的代码 QueryPerformanceCounter(&end); // 获取结束时间 execution_time = (double)(end.QuadPart - start.QuadPart) / frequency.QuadPart; printf("程序执行时间: %f 秒 ", execution_time); return 0; } ``` 建议 对于大多数通用计时需求,`clock()` 函数和 `time()` 函数结合 `difftime()` 函数是足够且简便的选择。 如果需要更高精度的计时,特别是在Windows平台上,可以考虑使用 `QueryPerformanceCounter()` 和 `QueryPerformanceFrequency()` 函数。 对于跨平台兼容性,`clock()` 函数和 `time()` 函数是标准库的一部分,而 `gettimeofday()` 函数和 `QueryPerformanceCounter()` 函数则依赖于操作系统和编译器支持。使用 `time()` 和 `difftime()` 函数
使用 `gettimeofday()` 函数