如何测量程序运行时间?
整理:黄工
素材来源:最后一个Bug
程序的运行时间,对一个系统比较重要。有的地方要求精确延时Nus,有的地方要求程序运行时间不能超过Nus。
所以,今天给大家分享一些常见测量程序(任务)运行时间的方法。
0、为什么需要测定程序运行时间?
软件的时效性决定着系统的快速性,这一句话的前提是在不考虑硬件的限制。不过对于我们大部分项目而言,而是真正限制系统反应速度的还是硬件资源等。
比如说我们真实世界与数字世界的窗口-AD采样芯片,我们都需要通过感知外界的一些反馈来对我们的系统做出正确的决策,那么AD芯片的转化速度就成了决定该反馈的速度,进而影响着我们的系统。
再比如,我们要运行一段算法,我们都期待越快越好,但这段算法会牵涉传感器的采集处理。那么这其中要综合考虑传感器采集的最大速率等问题。
所以,我们在项目研发初期就要考虑一些地方程序运行的时间问题。下面为大家总结日常的测量方法,供大家学习参考。
1、IO翻转示波器测量法
该方法简单方便,在测量的起始位置,设置IO为一种状态(低);在测量的结束位置,设置IO为另一个状态(高)。
TEST_IO_LOW();
//被测量代码start
//······
//被测量代码end
TEST_IO_HIGH();
这种测量方法要考虑添加的IO语句会占用一定时间(具体与你处理器能力有关),比如72M的STM32F1,一个IO翻转,应该在几十ns。
2、捕获IO测量法
该方法其实和示波器法类似,都属于外部测量方法,不过该方法的好处是能够弥补任务运行时间变化较大导致示波器测量显示难以辨识最长时间的问题。
大体实现思路
我们可以把IO翻转信号看成一个脉冲宽度来进行测量,只需要通过编程在用另外一款尽量高端的或者是主频更高的芯片通过捕获功能结合定时器进行时间记录即可,这样我们既可以获得程序运行的时间,还可以通过编程的思路,进行一段长时间内的脉宽的最大值、平均值等来更好的表征程序运行的状况。
该方法的缺点
该办法的精度等得由外部芯片来决定,不过对于大部分应用是满足的。
3、内部定时器法
该方法与上面的捕获IO方法是类似的,在嵌入式系统中经常会遇到时间戳的使用,同时还能获得CPU的利用率,其实方法都是一样的,系统中会开启一个核心定时器,该定时器一般不会受到外部的干扰等,通过该定时器在任务的开头和结尾分别安插标志,从而获得这段时间内的定时器计数,从而计算出程序运行时间。
该方法在我们的小型或者资源不足的芯片上使用得不多,因为我们很少有多余的定时器来进行额外的处理,同时由于定时器处理需要一定的时间,以及一些额外的计算等都会导致测量时间上的误差,如果该误差在能够接受的范围还是可以采用该方法的。
4.仿真器法
目前许多芯片的调试仿真器都会具备测量仿真程序的多方面性能的功能,比如说KEIL或者CCS集成开发环境也都基本支持测量程序运行时间的,一般都是测量断点之间的程序所运行时间,用户需要在开发环境中进行芯片当前的晶振、主频等等方面参数的设置以后基本能够获得一个运行时间结果。
声明:本文来源最后一个Bug,仅代表作者观点,不代表本公众号对该观点赞同或支持,版权归原作者所有。
-END-
免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除
猜你喜欢
先涨薪后付费 | 只为结果付费的人工智能高薪培养计划
翻到几年前的代码,我惊了。
几款优秀的 Windows 虚拟串口模拟器
最 后
若觉得文章不错,转发分享,也是我们继续更新的动力。
5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等!
在公众号内回复「更多资源」,即可免费获取,期待你的关注~
长按识别图中二维码关注
如何测量程序运行时间?相关推荐
- 测量程序运行时间的几个函数
摘要:本文详细的讨论了在windows平台中,测量程序运行时间的几个函数,GetTickCount, QueryPerformanceCounter和RDTSC,并给出示例代码. 算法的好坏有好多评价 ...
- java 测量程序运行时间
主类 测量运行时间 public class Time {public void test1() { // --第一种是以毫秒为单位计算的. long startTime=System.current ...
- 运行时间_一种简单、实用的测量程序运行时间的方法
点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记! 前言 平时我们可能很少去关注程序运行的时间,但是在一些情况下可能需要对程序进行一个整体的复盘.优化. 那么,程序运行的时间就是一个 ...
- 一种简单、实用的测量程序运行时间的方法
前言 平时我们可能很少去关注程序运行的时间,但是在一些情况下可能需要对程序进行一个整体的复盘.优化. 那么,程序运行的时间就是一个可以考虑的方面,可以测一下某些代码块.函数.算法的运行时间,然后整体考 ...
- C#测量程序运行时间及cpu使用时间(转)
对一个服务器程序想统计每秒可以处理多少数据包,要如何做?答案是用处理数据包的总数,除以累记处理数据包用的时间.这里要指出的是, 运行一段程序,使用的cpu时间,跟实际运行的时间是不一样的.附例如下: ...
- systick 时间修改_如何用SysTick实现测量程序运行时间
在实际的项目开发过程中,常常遇到需要得到一段代码的运行时间,通常的方法是用示波器来测量,这篇博文将用SysTick来实现精确测量程序运行的时间.STM32F4的内核定时器SysTick是一个24位的定 ...
- C语言测量程序运行时间
有时候希望得到运行某个模块的具体用时,如何实现呢 clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t.在MSDN中,查得对clock函数定义如下: clock_t clock ...
- C++ 测量程序运行时间 任务管理看内存
/** timer.cpp** Created on: 2014年12月28日* Author: judyge*/#include<cstring> #include<iomanip ...
- 运行时间_如何测量嵌入式软件运行时间?
整理:黄工 素材来源:最后一个Bug 程序的运行时间,对一个系统比较重要.有的地方要求精确延时Nus,有的地方要求程序运行时间不能超过Nus. 所以,今天给大家分享一些常见测量程序(任务)运行时间的方 ...
最新文章
- 管理学中的知名定律之阿尔布莱特法则
- 银行不能成为外国资本的“***”
- StandardContext
- 用户 'sa' 登录失败。 (Microsoft SQL Server,错误: 18456)
- WARNING: YARN_ROOT_LOGGER has been replaced by HADOOP_ROOT_LOGGER. Using value of YARN_ROOT_LOGGER
- The Pilots Brothers' refrigerator
- 《SAFe 4.0参考指南:精益软件与系统工程的规模化敏捷框架》一 3.13 故事
- 数据结构之字符串反转
- 可复用的基于ARM的W5100底层驱动设计
- CentOS 7 重装mysql编译过程报错解决方法
- 求解出能被5整除的正整数的乘积_事业单位数量关系:巧用“整除”求解数量关系...
- 回忆——我对方向的选择
- ping 代理_linux命令行代理神器-proxychains
- OpenCV识别指定颜色(黑、灰、白、红、橙、黄、绿、青、蓝、紫)
- 已知法向量 求投影_空间直线在平面上投影方程的多种解法
- 不同Costa环鉴相器鉴别特性
- CentOS8安装Docker服务
- php如何做防抖,别抖,OK? 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲...
- CSS3 animation动画,风车旋转、loading、人物走路动画案例
- 插画版Kubernetes指南(小孩子也能看懂的kubernetes教程)
热门文章
- 2020年关于SAP知识问答的一个新的尝试
- request download - 两个队列的研究
- CRM_ORGMAN_CHECK_OW
- SAP Cloud for Customer的跳转链接制作navigation link
- 如何自行查找SAP ERP的物料主数据和CRM产品主数据的映射关系
- manually set focus for tag library
- Usage of field SENDABLE in BOL entity
- nodejs启动机制分析
- mysql dump gtid_mysqldump GTID搭建主从复制库
- lol韩服游戏内设置_lol韩服游戏内设置界面翻译