C语言中求程序执行的时间可以使用clock()函数,_CRTIMP clock_t __cdecl __MINGW_NOTHROW clock (void);(可以把它直接视为clock_t clock(void);)
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
#ifndef _CLOCK_T_DEFINED 
typedef long clock_t; 
#define _CLOCK_T_DEFINED 
#endif 
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下: 
#define CLOCKS_PER_SEC ((clock_t)1000) 
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。
下面给出一个示例:

#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;
}

可是运行完每次的结果都为:

做10000000次空循环需要的时间为0.000000秒。

Process returned 0 (0x0)   execution time : 0.438 s
Press any key to continue.
加大循环次数也不行。

最后终于找到的问题所在:

#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;
}
看红色行和上面的区别,现在明白了吧!是由于括号运算符改变了运算的优先级,将里面的四则运算变成了整数之间的除法,造成位数被舍去,造成的误差。
原文链接:https://blog.csdn.net/wangluojisuan/article/details/7043667

linux clock函数使用方法相关推荐

  1. linux clock命令使用方法,Linux dateclock命令

    Linux系统手动更改时间可以用date命令,具体可以man date查看详细使用方法 格式:date mmddHHMM               就是"月日时分" 格式:dat ...

  2. Linux open函数使用方法记录

    1.作用 linux一切皆文件,那么如何打开文件,靠的就是open函数.打开和创建文件,对于文件来说存在文件则打开,不存在则创建:对于设备,可以打开相应设备(串口,SPI,I2C等). 2.函数原型 ...

  3. linux sysinfo函数使用方法--获取内存大小

    http://hi.baidu.com/%C0%CB%C2%FE%B5%C4%D0%A1%D0%AB%D7%D3/blog/item/1a3fef35202d4344251f1430.html Lin ...

  4. linux deamon函数使用方法说明

    转自http://blog.chinaunix.net/uid-20196318-id-94985.html 其实,linux提供了daemon函数用于创建守护进程 #include int daem ...

  5. linux获取当前内存函数,linux sysinfo函数使用方法--获取内存大小

    http://hi.baidu.com/%C0%CB%C2%FE%B5%C4%D0%A1%D0%AB%D7%D3/blog/item/1a3fef35202d4344251f1430.html Lin ...

  6. python的clock函数,Python3 time clock()方法

    Python3 time clock()方法 描述 Python 3.8 已移除 clock() 方法 可以使用 time.perf_counter() 或 time.process_time() 方 ...

  7. python中clock函数_Python time clock()方法

    Python time clock()方法 描述 Python 3.8 已移除 clock() 方法 可以使用 time.perf_counter() 或 time.process_time() 方法 ...

  8. c++ linux 获取毫秒_Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间

    使用Linux的gettimeofday函数可以达到获取精确到毫秒级的时间,其中t1=t_start.tv_sec是公元1970年至今的时间(换算为秒),t2=t_start.tv_usec是当 前秒 ...

  9. linux打印函数名,linux kernel 打印函数指针对应的函数名方法

    linux kernel 打印函数指针对应的函数名方法 内核中函数指针用的很多,在debug 的时候能直接打印出一个函数指针对应的函数就会很方便. 打印裸指针(raw pointer)用 %p,%p除 ...

最新文章

  1. 创建Swap交换空间
  2. for语句联系 -小九九乘法表
  3. Android开发工具GenyMotion安装和使用方法
  4. ImportError: cannot import name ‘python_2_unicode_compatible‘
  5. 细说flush、ob_flush的区别
  6. IdentityServer4实战 - 基于角色的权限控制及Claim详解
  7. 使用Zuul和Spring Boot创建API网关
  8. sqlmap地表最强sql注入检测工具学习使用
  9. 华为2018年收入超阿里腾讯总和,任正非:华为最大问题是赚钱太多
  10. maven配置项目根路径_Maven基本概念——根目录、项目创建、坐标
  11. com.mysql.jdbc.PacketTooBigException,及mysql 设置 max_allow_packet
  12. 逻辑运算map函数filter函数reduce函数
  13. GStreamer入门概念(二)
  14. 咏南中间件D7客户端演示
  15. ios怎么引入masonry_iOS-Masonry的简单使用
  16. mx350显卡天梯图_2019.8月CPU和显卡性能天梯图
  17. bulk interface驱动_USB驱动程序(较详细)一
  18. linux mint 下载迅雷安装包,Linux Mint如何安装“微信、QQ、迅雷、WPS办公软件”等国内上瘾软件...
  19. 香港城市大学赵翔宇招收AI机器学习数据挖掘 全奖PhD/博后/RA
  20. 计算机电脑怎么改皮肤,终极:如何更改计算机鼠标的皮肤

热门文章

  1. 建立屡获殊荣的单页网站的5个核心要素
  2. H264和音频流打包成PS流 (MPEG2-PS)
  3. 判断点是否位于多边形内(包含凹多边形)
  4. NineoldAndroids动画库源码分析
  5. 如何解决Not able to find Java executable or version. Please check your Java installation?
  6. Elaticsearch安装越南语分词器
  7. 《天天向上》聚焦首个碳中和主题公园 | 北京温榆河公园
  8. 计算机教育部第四次学科评估结果,权威重磅!教育部公布全国第四轮学科评估结果!...
  9. vue配置生产环境.env.production、测试环境.env.development
  10. 三星s8刷机包android11版本,番茄花园ROM|三星S8 ROM|三星G9500 ROM