C语言如何计算算法运行时间

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
    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++实现毫秒级精度定时器 定时器的实现一般需要借助系统提供的超时相关接口,比如select、 条件变量、或者sleep, usleep等,sleep,usleep提供的睡眠功能太有限,无法中途唤醒,这就导致他们其实不适合做定时器中的定时方法。而select条件变量都可以设置定时时长,而且在中途可以唤醒,精度也很高,因此,可以采用select或条件变量作为定时方法,本文讨论使用条件变量如何实现定时任务。 条件变量可以设置超时时间,如果条件变量在没有接收到来自其他线程的条件通知时,将一直阻塞,直到超时。通过这个特性可以按照定时器需要等 阅读详情

相关推荐

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打印。

qq_54037844的博客 4742

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..

m0_38062470的博客 1243

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 =

bjyh345的博客 1576

如何实现C++毫秒级时间运算

本文将介绍如何使用 C++ 标准库中的头文件实现毫秒级时间运算。这两个库都是用于处理时间的库,但功能用法有所不同。其中,的精度通常只能达到秒级别(对应 10 位 Unix 时间戳),而最高可以达到纳秒级(对应 13 位时间戳)。

♀我爱摇滚,更爱金属乐♀ 2080

【C语言计算算法运行时间

我们要比较一些相同实现功能的不同算法运行时间可以用下面模板(C语言计算时间最多精确到毫秒): #include<stdio.h> #include<stdlib.h> #include<time.h> int main( void ) { clock_t start, finish; double duration; printf( "此算法运行了"); start = clock(); //起始处打点

m0_46296905的博客 2488

直接插入排序(C语言)[测试数据随机生成+计算程序运行时间+算法效率分析]

直接插入排序,使用C语言实现。 这里为了方便测试面对大量数据时直接插入排序算法运行时间,通过宏定义来设定生成随机数的数量(即参与排序的数据数量),利用rand()函数生成随机数,便于生成大量数据,并且通过srand()函数保证每次编译运行生成的随机数不同,使用<time.h>中的clock()来计时。 代码使用arr[0]临时存放待排序的那个元素(即判断是否要插入的那个数),从arr[1]开始存放随机数。 时间复杂度,空间复杂度,算法稳定性

记录学习 2142

计算火车运行时间——C语言(PTA)

代码计算火车运行时间——C语言(PTA)

m0_74063972的博客 750

计算你的算法运行时间

通过不同算法函数运行的时间可以比较出不同算法中哪一种更为优异,所以懂得计算函数运行时间是一个很基础的知识。计算函数运行时间,这是我在数据结构与算法浙江大学陈姥姥的课程学到的,下面让我来说一下具体过程。 #时间复杂度 首先,回忆一下时间复杂度。计算机科学中,算法时间复杂度是一个函数,它定量描述了该算法运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个...

城溪羡鱼的博客 9639

c语言计算火车的运行时间_C++火车入轨算法的实现代码

【问题描述】某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择...

weixin_31232695的博客 1403

程序运行的时间(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; /

Receiver_L的博客 5777

C 语言 clock() 函数,例:计算多项式值

C 语言 clock() 函数,例:计算多项式值 /** * clock(): 捕捉从程序开始运行到 clock() 被调用时所耗费的时间。 * 这个时间单位是 clock tick, 即“时钟打点”。 * 常数 CLK_TCK: 机器时钟每秒所走的始终打点数。 * In Macintosh or C99, CLK_TCK == CLOCKS_PER_SEC * http://www.c...

weixin_30405421的博客 430

C语言输出程序运行时间

以以前的四平方那题为例子:题目链接:https://www.6k8k.top/post/92.html输出结果:#include<stdio.h> #include<time.h> intmain(){ intn; inta,b,c,d; clock_tstart,finish;//定义变量 d...

啊啊啊啊2 1949

C语言计算程序运行的时间长度

C语言计算程序运行的时间长度,也就是求一段代码的运行结束后耗时多长时间的问题,求十亿以内质数的数量

gwsong52的博客 1525

计算算法运行时间、获取机器视觉图像处理帧率的方法之一(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) ...

某帅气小伙的博客 1167

c 语言 电梯

/***** 题目描述 在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。 注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门...

qq_39345244的博客 799

c/c++ 计算程序运行时间,精确到毫秒

#include &lt;time.h&gt; int main() {                 clock_t start,end;                 start=clock(); //To do                 end=clock();                 printf("totile time=%f\n",(float)(end-s...

大白机器人的博客 1万+

C代码规范与运行时长分析模板

/***************************************************** 文件:main.c 功能:测试运行时间(C)! 作者:chinayaosir   QQ:44633197 工具:VC++6.0编译OK! 日期:11/28/2009 代码目录: //1.包含头文件 //2.main主程序 //不同的算法实现的性能,运行时间相差非常大的! 修改列表: ***

移动互联网改变生活,高效配对交易创造财富 6198

C语言写的操作系统短作业优先算法

短作业优先的算法思想:        通过对运行时间的排序然后比较,运行时间短的进程优先执行,第一个进程的开始时间等于到达时间,完成时间=开始时间+服务时间,当下一个进程的开始时间&gt;=该进程的完成时间时,下一个进程的开始时间=上一个进程的完成时间,周转时间带权周转时间根据公式可以得出    一下是算法的源码:#include &lt;stdio.h&gt; //定一个结构体 struct ...

ZHUO_SIR的博客 5328
上一篇: 网络通信方式:CS和P2P入门区别
下一篇: poj算法刷题进阶
UKey_
博客等级 码龄10年 258粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值