这篇文章介绍一下在C或者C++中计算程序执行时间的三种常见方法。

目录

  • 方式1: time + difftime
  • 方式2: clock + CLOCKS_PER_SEC
  • 方式3: timeb+ftime
  • 总结

这篇文章主要介绍三种计算执行时间的方式。

方式1: time + difftime

使用time.h标准库中的time和difftime函数可以返回记录的两次time_t结构的时间之间的差值,这种方式只能精确到秒级,代码示例如下:

#include <stdio.h>
#include <time.h>int fibonacci(int n) {if(n == 0 || n == 1) return 1;return fibonacci(n-1) + fibonacci(n-2);
}int main() {int n = 0;while(~scanf("%d",&n)) {time_t start_time=0, end_time=0;time(&start_time);printf("fibonacci(%d)=%d\n",n,fibonacci(n));time(&end_time);printf("Time Used: %f\n",difftime(end_time,start_time));}return 0;
}
  • 执行结果如下
45
fibonacci(45)=1836311903
Time Used: 9.000000

方式2: clock + CLOCKS_PER_SEC

另外利用clock函数代替time函数也能起到相同作用,这种方式通过计算两个clock函数之间的时钟单元来实现,代码示例如下:

#include <stdio.h>
#include <time.h>int fibonacci(int n) {if(n == 0 || n == 1) return 1;return fibonacci(n-1) + fibonacci(n-2);
}int main() {int n = 0;while(~scanf("%d",&n)) {time_t start_time=0, end_time=0;start_time=clock();printf("fibonacci(%d)=%d\n",n,fibonacci(n));end_time=clock();printf("Time Used: %f\n",(double)(end_time-start_time)/CLOCKS_PER_SEC);}return 0;
}
  • 执行结果如下
45
fibonacci(45)=1836311903
Time Used: 8.715660

方式3: timeb+ftime

另外利用clock函数代替time函数也能起到相同作用,这种方式通过计算两个clock函数之间的时钟单元来实现,代码示例如下:

#include <stdio.h>
#include <sys/timeb.h>
#include <string.h>
int fibonacci(int n) {if(n == 0 || n == 1) return 1;return fibonacci(n-1) + fibonacci(n-2);
}int main() {int n = 0;while(~scanf("%d",&n)) {struct timeb start_time, end_time;memset(&start_time,0,sizeof(struct timeb));memset(&start_time,0,sizeof(struct timeb));ftime(&start_time);printf("fibonacci(%d)=%d\n",n,fibonacci(n));ftime(&end_time);printf("Time Used: %d.%d\n",end_time.time-start_time.time,end_time.millitm-start_time.millitm);}return 0;
}
  • 执行结果如下
45
fibonacci(45)=1836311903
Time Used: 8.621

总结

这篇文章主要介绍了三种计算执行时间的方式。

C基础:程序执行时间的计算方法的三种方式相关推荐

  1. 详解微信小程序页面间传递信息的三种方式

    详解微信小程序页面间传递信息的三种方式 在开发微信小程序的时候,经常会遇到在页面间传递信息的情况,有三种方法可以实现. 1. 使用数据缓存 将要存储的数据使用以下方法放入缓存 wx.setStorag ...

  2. C# 将程序添加开机启动的三种方式

    前言 最近在研究程序随系统启动,发现在 win7 上因为权限的问题,写注册表的时候总是会出现问题,写不进去导致的不能自动启动,随后决定仔细的看一看这方面的问题. 查资料过程中主要发现有三种方式可以添加 ...

  3. 小程序瀑布流的实现三种方式

    实现思路:把图片分成两排,创建两个数组,计算总数组中图片的宽高,对比上一个图片和当前的图片高度,低的就给另一个数组添加. 效果图: 第一种:如果后端返回了图片高度 处理过程如下: js: Page({ ...

  4. Java反射基础:获取Class对象的三种方式

    package com.zxl.reflect;import org.junit.jupiter.api.Test; /* * 获取Class对象 * */ public class TestRefl ...

  5. Java基础系列:判断空指针的三种方式

    1 简介 空指针:针对对象类型,对象在堆中分配"房子".空指针(null)的对象没有分配到"房子",所以,无法使用该对象. 使用任何的对象数据时,都要进行空指针 ...

  6. Python(2)-第一个python程序、执行python程序三种方式

    第一个Python 程序 1. 第一个Python 程序 2. 常用两Python个版本 3. 程序执行的三种方式 3.1 解释器 3.2 交互式运行Python程序 3.3 IDE(集成开发环境)- ...

  7. 小程序引入icon的三种方式

    小程序引入icon的三种方式(原生图标.WeUI图标组件.iconfont图标) 原生图标 小程序里原生图标是通过icon标签来引入的: <icon type="success&quo ...

  8. python程序执行三种方式,Python运行程序的三种方法

    对于python中运行程序的方法,是我们初学时就已经掌握过的了,想必大家会的只是其中的一两种方式. 本篇对程序运行的三种方式进行了整理,分别是:Python的解释器.交互式运行和PyCharm,大家在 ...

  9. JavaEE多线程基本概念 及 创建多线程程序的三种方式

    Hello! 大家好.(非常平庸的开场白 习惯一下).此篇博客是我的"处女作",因为是第一次写博客,在文章格式以及文章内容可能会有许多问题和缺陷.欢迎各位大神对我的文章进行指正!我 ...

  10. Spark Scala语言学习系列之完成HelloWorld程序(三种方式)

    三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. windows下安装好scala后,直接C ...

最新文章

  1. python 随机生成密码
  2. win7虚拟磁盘服务器,Win7系统如何删除虚拟磁盘 win7系统删除虚拟磁盘的方法
  3. 45 jump game II(贪心)
  4. “chaos“的算法--之双向链表
  5. 逻辑回归与朴素贝叶斯的战争
  6. POJ 2991 Crane(线段树+计算几何)
  7. 【NumPy基础】100道numpy练习——进阶篇
  8. 麦子学院bootstrap实战项目官网,后台,jquery.singlePageNav.min.js ,wow.min.js,animate.css使用...
  9. TCPIP协议详解----TCP/IP基础知识
  10. 想要快速增肌?肌酸可以帮你高效获得肌肉和力量
  11. 面试-数据知识点准备
  12. STM32 Mbed系列-ADC参考电压设置
  13. 谷歌浏览器的本地收藏夹在什么位置?
  14. 写博客有什么意义以及为什么?
  15. 1. Python环境搭建
  16. 计算机视觉:目标跟踪论文推荐
  17. matlab论文图示例代码,MATLAB数字水印 源代码+毕业论文
  18. 实验五 ListView 水果列表
  19. 深度分析|一文读懂银行数据架构体系
  20. UG11经典工具条设置

热门文章

  1. 二分法求解方程的根java_【数值分析】利用二分法和牛顿公式求解方程的根
  2. 锂电池的充电原理以及快充原理
  3. 双电阻差分电流采样_运放-输入偏置电流与输入失调电流
  4. 顶级域名、一级域名、二级域名、子页面
  5. 【服务器】iis的重启服务器、重启iis、回收(重启)线程池、刷新网站
  6. 记录--前端路由 hash 与 history 差异
  7. 用node+WebSocket+MySQL+vue仿做学习通的一些功能(一):用户登录和注册页面的实现
  8. 潮汐天气《隐私政策》
  9. 4G模块Air720系列 android RIL驱动源码发布
  10. vim配置——C/C++代码自动补全