ISYSTEM调试实践12-软件运行时间的优化

news2024/11/27 20:32:59

实际工程的运行要比上篇文章提到的例程复杂的多
ISYSTEM调试实践11-Profiler Timeline和软件运行时间分析

由于复杂的应用层模型和底层任务,假定应用层模型的运行周期是10ms,任务函数的执行时间往往超过1ms,这时候就必须要考虑函数执行本身的时间。

例如下图,taska\taskb\taskc\taskapp是10ms执行一次,task5ms任务是5ms执行一次。
由于10ms周期里,四个任务执行了6.95ms,等于占用了其他函数的周期,导致5ms的任务不能按时执行。
虽然说由于考虑程序执行时间以后,函数调用被影响无法避免,但是我们还是希望尽可能减少这种结果的发生,将影响程度降到最低。
在这里插入图片描述
所以该5ms的任务统计情况详见下图。它的period也就是调用周期异常,最大15ms,相当于周期性抖动(JIT)等于达到了200%,这是不能被接受的。而且最小仅仅位652us,等于是无效操作,毕竟这个任务既然要求5ms,太快的执行是没有意义的
在这里插入图片描述比如ccpDaq这个函数也是5ms执行一次,被调用的情况和上一个类似,周期完全被打乱。
在这里插入图片描述

优化的方法就是找到哪些函数占用了大量的时间。

方法一:

例如这个函数执行一次需要2.5ms,时间长是因为大量调用了延时函数,可以根据需要减少周期。
在这里插入图片描述经过对延时适当的降低,平均运行时间降到了1.05ms

在这里插入图片描述
在这里插入图片描述

方法二:

将需要时间才能执行完成的函数拆开,分批次执行,错开时间,给那些调用周期更短的任务执行。
在这里插入图片描述左图是优化后
在这里插入图片描述

将上文提到10ms执行一次的aska\taskb\taskc\taskapp分开到两次执行,而将5ms执行一次的task5ms采样任务插入到中间任务,可以大大降低5ms任务的抖动时间。
在这里插入图片描述这里抖动时间将为100%。

方法三:

ADC_GetConvertValue,这个函数在1.023这个统计周期内被调用了25808次,累计花了190ms,ADC读取作为被大量调用的函数,也需要进行优化,这里建议一般改为DMA读取,并且增加ADC的工作频率
在这里插入图片描述在这里插入图片描述

改为DMA以后,平均call time降为463ns
在这里插入图片描述

方法四:

将不需要频繁执行的函数降低调用频率。
这个要根据项目实际情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是护网行动?

护网,也称“网络保护”,是指网络安全人员对企业或组织的网络进行检查、维护和保护,以防止网络受到黑客攻击、病毒、木马或其它恶意程序的侵入和损害。护网工作包括:网络安全规划、网络配置和控制、漏洞发现和修复、入侵检测和防范…

ES6 拓展(下)

一、函数的拓展 1.1、默认参数 在ES5中设置默认参数: function func(words, name) {name name || "闷墩儿";console.log(words, name); } func("大家好!我是"); func("大家好!我是", "憨憨");func(…

使用React18+Ts创建项目

1. 创建项目 首先,使用create-react-app工具创建一个新的React项目: npx create-react-app 项目名 --template typescript2. 安装依赖项 使用脚手架创建项目后,自带react-dom等依赖项,但react中的所用的路由方法是react-router…

建站系列(八)--- 本地开发环境搭建(WNMP)

目录 相关系列文章前言一、准备工作二、Nginx安装三、MySQL安装四、PHP安装及Nginx配置五、总结 相关系列文章 建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— …

cookie、session、Token区别

1 HTTP无状态,什么是无状态? http 无法知道是哪个客户端发出的请求,也无法判断是否为已登录用户请求,这就导致了 http 无法记住用户的登录状态。 2 cookie和session的是什么?为什么session这么好还要用cookie? coo…

VR钢铁实训 | 铁前事业部虚拟仿真培训软件

随着科技的发展,虚拟现实技术在各个行业中的应用越来越广泛。在钢铁冶炼行业中,VR技术也逐渐得到了应用,其中铁前事业部虚拟仿真培训软件就是一项非常有优势的技术。 铁前事业部虚拟仿真培训软件是广州华锐互动打造的《钢铁生产VR虚拟培训系统…

MySQL的用户管理

1、MySQL的用户管理 (1)创建用户 create user zhang3 identified by 123123;表示创建名称为zhang3的用户,密码设为123123。 (2)了解user表 1)查看用户 select host,user,authentication_string,select…

react memo判断刷新机制 自定义的比较函数 避免重复渲染

需求: 1. 需要在courseList参数变化时重新渲染组件。 2. 需要在currentWeekNumber参数 等于我指定值才重新渲染组件。 3.以上2个条件同时满足。 遇到的坑 一开始实现了我上面指定的问题需要的函数,后面发现怎么都刷新不了,经过深入观察发现m…

【ESP32】串口+wifi 透传,以及回调函数的使用

本文主要记录【ESP32】串口wifi 透传】的学习记录,主要包括 1.串口的AT 模式和透传模式 2. 串口命令解析 3. socket 连接 4. 回调函数的使用 【ESP32】串口wifi 透传,以及回调函数的使用 1. 函数接口说明2.开发环境3.硬件连接4.测试结果4.1发送 ATWS 命令…

Linux学习笔记-Ubuntu系统用户、群组、权限管理

一、概述 本文记录Ubuntu系统下通过命令操作用户账户进行管理。 Ubuntu系统版本: Linux ubuntu 5.15.0-1034-raspi #37-Ubuntu SMP PREEMPT Mon Jul 17 10:02:14 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux 注:查看系统版本号的指令如下 uname -…

YOLOV7改进-针对小目标的NWD(损失函数)

link 1、复制这些 2、utils-loss,这里加 3、把这几行复制到utiils的loss.py 4、先对CoputerLoss类做修改 5、把那一行替换成这个 6、修改 7、iou_ration是超参,可以调,如果小目标比较多的话,这个值可以低一些,…

Vuex - state 状态(获取和使用共享数据)

文章目录 一、state是什么?二、state状态的作用三、如何使用store数据呢?使用数据的两种方式:1. 通过store 直接访问2. 通过辅助函数访问(简化) 一、state是什么? state是状态(数据) , 类似于v…

redis集群最少使用三个主节点的原因

集群最少三个主节点的原因 https://redis.io/docs/management/scaling/ 官网建议,搭建 redis 集群最少三主三从。 但是这么做是出于什么考虑呢? https://blog.csdn.net/qq_35549286/article/details/127057374 借鉴这位的解答 为什么是三个? cluster各…

骨传导与入耳式耳机哪种音质好?该如何选择?

骨传导耳机和传统耳机的定位不同,所以没有可比性,如果一定要说哪款耳机音质好,答案是入耳式耳机音质比较好! 首先入耳式耳机是直接塞入耳朵佩戴,会最大程度减少漏音,同时不会改变音质,会直接传…

构建自定义美颜应用:全局美颜SDK的开发指南

美颜技术已经成为许多应用程序和平台的标配之一,为用户提供了改善外观的机会。为了在你的应用中提供自定义的美颜功能,你可以考虑使用全局美颜SDK。本文将向你介绍如何构建自定义美颜应用,以及开发全局美颜SDK的关键步骤和技巧。 一、明确需…

Revit SDK 介绍:RayTraceBounce 光线反弹

前言 这个例子模拟光线反弹。 内容 通过修改参数,从(0,0,0)点向(1,0,0)方向射出光线,经过若干次反弹之后的结果。如图所示: 在Revit API 中&…

通过 http-server 运行刚打包出来的脚手架项目

这里 我打包了自己的vue项目 react其实也一样 如果我直接 打开打包出来的 dist 下面的index.html 会出现白屏资源找不到 或者跨域等问题 这个问题其实配个nginx也能解决 但是其实如果只是想做个测试 nginx就太麻烦了 我们可以通过npm指令 全局安装一个http-server 终端执行 …

每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题

食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之全排列 ♈️今日夜电波:带我去找夜生活—告五人 0:49 ━━━━━━️💟──────── 4:59 …

OpenRoads Designer道路旁添加公交车停车区

在道路工程建模时如果需要在路旁添加公交车停车区,如下图所示,可通过对道路轴线进行局部偏移的方式实现。 在道路旁添加如上图所示的公交车停车区操作步骤: 1、使用Geometry下的Single Offset Partial将路线中的一段进行偏移: 参数…

亚马逊、ManoMano等跨境电商平台测评还能做吗?

亚马逊测评是卖家通过真实购买商品并撰写评价来获取评价权利的过程 卖家账号发布产品后,测评买家账号进入商铺进行购买并对商品质量、外观、卖家服务态度和物流体验等方面进行点星留评 在亚马逊卖家运营中,评论是一个关键而必不可少的环节,…