C语言使用clock进行计时

  1. #include “stdio.h”  
  2. #include “stdlib.h”  
  3. #include “time.h”  
  4.   
  5. int main( void )  
  6. {  
  7.    long    i = 10000000L;  
  8.    clock_t start, finish;  
  9.    double  duration;  
  10.      
  11.    printf( "Time to do %ld empty loops is ", i );  
  12.    start = clock();  
  13.    while( i-- )      ;  
  14.    finish = clock();  
  15.    duration = (double)(finish - start) / CLOCKS_PER_SEC;  
  16.    printf( "%f seconds\n", duration );  
  17.    system("pause");  

  18. 现在是分析代码,首先是用到clock,其实就是利用时钟周期的意思,到底是怎么计算的呢?基本思想就是计算到底代码的运行花费了多少时钟周期,然后再除以每一秒所花费的时钟周期数目,记住,单位是秒,从结果上看也很容易得出基本单位是毫秒。

  19. 首先定义 clock_t start,变量,记录所花费的时钟周期数目,然后再转换成时间间隔,基本上思想就是这样。

转载于:https://www.cnblogs.com/sunliwang/p/6544409.html

在C语言中,`clock()`函数用于测量程序或特定代码段的执行时间。它定义在头文件`<time.h>`中,并返回从程序启动到调用`clock()`函数之间的CPU时钟计时单元(clock tick)数[^1]。 ### 基本使用方法 - **数据类型**:`clock_t` 是一个长整型数,用来保存`clock()`返回的时间值。 - **常量**:`CLOCKS_PER_SEC` 表示每秒的时钟计时单元数,通常为1000,即每毫秒增加一次计数[^1]。 - **计算时间差**:通过两次调用`clock()`函数,分别记录开始和结束时间,然后将它们的差除以`CLOCKS_PER_SEC`,即可得到以秒为单位的运行时间。 ### 示例代码 下面是一个使用`clock()`函数来测量空循环执行时间的完整示例: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { long i = 10000000L; clock_t start, finish; double TheTimes; printf("做%ld次空循环需要的时间为", i); start = clock(); while (i--) { // 空循环体 } finish = clock(); TheTimes = (double)((finish - start) / CLOCKS_PER_SEC); printf("%f秒。\n", TheTimes); return 0; } ``` 在这个例子中,首先记录了循环开始前的时钟计数值`start`,然后执行了一个空循环,在循环结束后再次调用`clock()`获取当前的计数值`finish`。最后通过`(finish - start) / CLOCKS_PER_SEC`计算出循环所消耗的时间,并转换为秒进行输出。 ### 注意事项 - `clock()`测量的是CPU时间,而不是真实世界的时间。这意味着如果程序中有I/O操作、系统调用或其他阻塞行为,这部分时间可能不会被计入。 - 如果你需要测量的是真实时间(wall-clock time),可以考虑使用`time()`函数或者更精确的`gettimeofday()`等其他API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值