C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中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。下面举个例子,你可以使用公式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( void )
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* 测量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- ) ;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}
在笔者的机器上,运行结果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。 相关推荐
c语言计时器,定时器
1. clock()函数需要引用头文件 “time.h”注:clock函数返回从开始这个程序到调用的 clock() 函数之间的CPU时钟计时单元(clock tick)数。返回值类型是 clock_t。其中 CLOCKS_PER_SEC 是一个常数,表示一秒钟有多少个时钟数。2. 1time(), difftime() 函数返回从1970年1月1日00:00:00到现在经过的秒数注:建议使用 difftime() 来计算程序执行所花时间(更精确,单位:s2.2 每隔10s打印。
clock()与gettimeofday()
目录 1.clock() 2.gettimeofday()----linux C函数 1.clock() 是C标准库<time.h>中的函数 声明为:clock_t clock(void) 功能:创建程序进程到clock()函数被调用之间的cpu时钟计时单位数,即硬件滴答数。可通过下面的CLOCKS_PER_SEC换算成秒。 返回值类型为clock_t,clock_t是用来保存时间的数据类型,typedef long clock_t,其实就是一个长整型。 常量CLOC..
c++计算程序运行时间-毫秒级和秒级
1.毫秒级: 写一个头文件: #include <iostream> #include <chrono> using namespace std; class Timer { public: Timer(): t1(res::zero()),t2(res::zero()) { setTime(); } ~Timer() {} void setTime() { t1 = clock::now(); } void getTime() { t2 =
如何实现C++毫秒级时间运算
本文将介绍如何使用 C++ 标准库中的和头文件实现毫秒级时间运算。这两个库都是用于处理时间的库,但功能和用法有所不同。其中,的精度通常只能达到秒级别(对应 10 位 Unix 时间戳),而最高可以达到纳秒级(对应 13 位时间戳)。
【C语言】计算算法的运行时间
我们要比较一些相同实现功能的不同算法的运行时间可以用下面模板(C语言计算时间最多精确到毫秒): #include<stdio.h> #include<stdlib.h> #include<time.h> int main( void ) { clock_t start, finish; double duration; printf( "此算法运行了"); start = clock(); //起始处打点
直接插入排序(C语言)[测试数据随机生成+计算程序运行时间+算法效率分析]
直接插入排序,使用C语言实现。 这里为了方便测试面对大量数据时直接插入排序算法的运行时间,通过宏定义来设定生成随机数的数量(即参与排序的数据数量),利用rand()函数生成随机数,便于生成大量数据,并且通过srand()函数保证每次编译运行生成的随机数不同,使用<time.h>中的clock()来计时。 代码使用arr[0]临时存放待排序的那个元素(即判断是否要插入的那个数),从arr[1]开始存放随机数。 时间复杂度,空间复杂度,算法稳定性
计算火车运行时间——C语言(PTA)
【代码】计算火车运行时间——C语言(PTA)
计算你的算法运行时间
通过不同算法函数运行的时间可以比较出不同算法中哪一种更为优异,所以懂得计算函数运行时间是一个很基础的知识。计算函数运行时间,这是我在数据结构与算法浙江大学陈姥姥的课程学到的,下面让我来说一下具体过程。 #时间复杂度 首先,回忆一下时间复杂度。计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个...
c语言计算火车的运行时间_C++火车入轨算法的实现代码
【问题描述】某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择...
程序运行的时间(C)
C语言计算程序运行的时间 1.概念 函数 clock():捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间的单位是clock tick,即“时钟打点”。(C语言提供的函数,使用时要引入头文件time.h 即#include<time.h>) 常数 CLK_TCK:机器时钟每秒所走的始终打点数。具体数值多少因机器而异。 2.常用模板 #include<stdio.h> #include<time.h>` clock_t start, stop; /
C 语言 clock() 函数,例:计算多项式值
C 语言 clock() 函数,例:计算多项式值 /** * clock(): 捕捉从程序开始运行到 clock() 被调用时所耗费的时间。 * 这个时间单位是 clock tick, 即“时钟打点”。 * 常数 CLK_TCK: 机器时钟每秒所走的始终打点数。 * In Macintosh or C99, CLK_TCK == CLOCKS_PER_SEC * http://www.c...
C语言输出程序运行时间
以以前的四平方和那题为例子:题目链接:https://www.6k8k.top/post/92.html输出结果:#include<stdio.h> #include<time.h> intmain(){ intn; inta,b,c,d; clock_tstart,finish;//定义变量 d...
C语言计算程序运行的时间长度
C语言计算程序运行的时间长度,也就是求一段代码的运行结束后耗时多长时间的问题,求十亿以内质数的数量
计算算法运行时间、获取机器视觉图像处理帧率的方法之一(c++)
增加头文件:#include <time.h> 定义开始结束文本:clock_t start,finish; 在算法前一行加入:start=clock(); 在算法后一行加入:finish=clock(); 算法运行时间为:double(finish-start)/CLOCKS_PER_SEC*1000 视觉图像处理帧率为:1000/(double(finish-start)/CLOCKS_PER_SEC*1000) ...
c 语言 电梯
/***** 题目描述 在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。 注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门...
c/c++ 计算程序运行时间,精确到毫秒
#include <time.h> int main() { clock_t start,end; start=clock(); //To do end=clock(); printf("totile time=%f\n",(float)(end-s...
C代码规范与运行时长分析模板
/***************************************************** 文件:main.c 功能:测试运行时间(C)! 作者:chinayaosir QQ:44633197 工具:VC++6.0编译OK! 日期:11/28/2009 代码目录: //1.包含头文件 //2.main主程序 //不同的算法实现的性能,运行时间相差非常大的! 修改列表: ***
C语言写的操作系统短作业优先算法
短作业优先的算法思想: 通过对运行时间的排序然后比较,运行时间短的进程优先执行,第一个进程的开始时间等于到达时间,完成时间=开始时间+服务时间,当下一个进程的开始时间>=该进程的完成时间时,下一个进程的开始时间=上一个进程的完成时间,周转时间和带权周转时间根据公式可以得出 一下是算法的源码:#include <stdio.h> //定一个结构体 struct ...
4742




被折叠的 条评论
为什么被折叠?



