数据类型 clock_t

关于该数据类型的定义如下:

#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)

需要注意:在Linux系统下,CLOCKS_PER_SEC的值可能有所不同,使用Linux打印出来的值是1000000,表示的是微秒。

计时函数 clock()

clock()是C/C++中的计时函数,而与之相关的数据类型是clock_t。clock函数的定义为:

clock_t clock(void);

clock_t 是用来保存时间的数据类型,返回的单位是毫秒,如果想返回以秒为单位可以用:clock() / CLOCKS_PER_SEC 来计算。返回值表示该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”之间的CPU时钟计时单元数,在MSDN中称为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。

计算进程的运算时间

可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。
所以,可以使用公式clock() / CLOCKS_PER_SEC 来计算一个进程自身的运行时间:

void elapsed_time() {printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
}

也可以使用clock()函数来计算你的机器运行一个循环或者处理其他事件到底花了多少时间:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{long i = 10000000L;clock_t start, end;double duration;/* 测量一个事件持续的时间*/printf( "Time to do %ld empty loops is ", i) ;start = clock();while( i-- );end = clock();duration = (double)(end - start) / CLOCKS_PER_SEC;printf( "%f seconds\n", duration);system("pause");
}

运行结果:

Time to do 10000000 empty loops is 0.012000 seconds

时钟计时单元的长度为1毫秒,则计时的精度也为1毫秒,那么我们可不可以通把 CLOCKS_PER_SEC 定义的更大来使计时精度更高呢?答案是不可以,在标准C/C++中,最小的计时单位是1毫秒。

程序定时暂停

CLOCKS_PER_SEC 适用于将计算系统时间类型转换为用户可读的秒时间,包含于头文件 time.h 中。
利用clock()函数和for循环可以完成程序的定时暂停:

#include <iostream>
#include <time.h>
using namespace std;int main()
{// ...int b = clock() / CLOCKS_PER_SEC;for(int i=0; i<100; ) { // 完成100秒定时i = clock() / CLOCKS_PER_SEC;i = i - b;}// ...return 0;
}

参考:百度百科

计时函数clock()与数据类型clock_t相关推荐

  1. C / C++ 中的计时函数: clock()

    您也可以在我的个人网站中查看此文:http://zhaokaifeng.com/?p=1622 谢谢您的访问 : ) clock() 函数是 C 标准库 time.h 中的一个函数, time.h 标 ...

  2. C语言学习之时钟函数clock()函数

    // nomial.cpp : Defines the entry point for the console application. //多项式求解 //计时函数 //clock():从捕捉程序开 ...

  3. time.h中的相关计时函数time,localtime,clock等详解

    C++对时间的操作也有许多值得大家注意的地方.最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作.获取和显示等等的问题.下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法 ...

  4. C/C++常用计时函数

    目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但 ...

  5. C/C++程序计时函数

    在C/C++中有可以直接测试程序运行时间的函数,在<time.h>/<ctime>头文件中,非常方便和实用. clock()是C/C++中的计时函数,而与其相关的数据类型是cl ...

  6. 【C/C++】计时函数比较

    目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但 ...

  7. Windows 各种计时函数总结

    本文对Windows平台下常用的计时函数进行总结,包括精度为秒.毫秒.微秒三种精度的 5种方法.分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及cloc ...

  8. 计时函数(基本知识)

    计时函数的运用 在算法题提交的时候,系统经常会给你一个TLE. 这提醒我们要优化算法,但我们如何优化算法这是一个问题. 我们可以运用计时函数,大概统计一下代码在最糟糕的情况下的运行时间. 可以大概得出 ...

  9. C语言学习笔记---时间函数clock()和time()

      时间函数在编写代码的时候会经常用到,下面就来总结一下clock和time函数的用法,函数原型如下: clock_t __cdecl clock(void);__CRT_INLINE time_t ...

最新文章

  1. java有模糊查询吗,到底Java里的模糊查询语句该怎么写
  2. python 调用摄像头拍照_《自拍教程67》Python调用摄像头, 拍照拍照!
  3. Tomcat7.0安装配置
  4. Spring @scope注解
  5. 生活中常见物联网实例_物联网网关常见问题解答(一)
  6. 获取当天日期、昨天日期
  7. 埃斯顿机器人 王杰高_埃斯顿自动化王杰高博士受邀赴韩参加“ROBOT WORLD 2016”等一系列相关活动...
  8. dreamweaver 正则表达式为属性值加上双引号_Python正则表达式(一)
  9. Oracle11g新特性:在线操作功能增强-Oracle11g在线重建索引功能增强 (转载)
  10. Java并发编程中的join()与interrupt()函数
  11. 贵州省NPP净初级生产力数据/NDVI数据
  12. CAN总线协议以及概念
  13. influxdb的retention policy
  14. 提高百度SEM竞价托管效果常见的4大问题
  15. 如何从华为云服务器上找回手机,华为云服务怎么样使用手机找回功能
  16. 有功功率、无功功率 和 视在功率之间的关联
  17. 主板启动提示USB设备出现电涌,15秒后关闭以保护系统问题
  18. 带有源代码的2020年20种最佳HTML5游戏模板
  19. 优雅地寻找网站源码(一)
  20. Rstuio read.csv():列的数目比列的名字要多

热门文章

  1. 【JS】网页点击悬浮小苹果+小虫子追踪鼠标位置(可替换)
  2. 2019年Android GMS 认证 boot logo 最新要求
  3. 光纤、光缆的基本知识(2)
  4. php-resque消息队列
  5. Python专辑-QQ机器人2:智能聊天、定时执行任务实现
  6. C# vb .net实现玻璃桌子效果滤镜
  7. AARRR模型——留存:始于价值,合于套路,久于习惯(中)
  8. SPI Flash芯片W25Q32英文版数据手册解读(三)---------程序编写,电路应用
  9. 求和计算机教案,初中信息技术《Excel求和》教案.docx
  10. 2018年最值得关注的10家区块链公司新秀