首页 > 其他分享 >嵌入式代码优化技巧

嵌入式代码优化技巧

时间:2023-12-13 21:04:11浏览次数:32  
标签:技巧 复杂度 嵌入式 代码优化 线程 内存 拷贝 优化 指针

内存管理技巧

1.C/C++工程应尽量避免深拷贝,尽量用浅拷贝(指针或者引用),如果指针需要频繁拷贝,用智能指针是一种不错的选择

2.启用内存池管理线程的内存开销,事先在堆里边分配好,然后快速使用

避免复杂的浮点运算

1.复杂的浮点运算尽量避免,有些芯片是不支持硬件双精度浮点数的,比如全志T3,实在是非用不可,可以用查表的方式加快速度

2.数据传输可以用整型数据压缩减少带宽,这个在can数据传输比较常见

空间换时间

比如一个数据模型体积很大,加载起来很耗时,可以考虑把它编译到软件里边去,然后运行的时候提前加载到内存

算法复杂度优化

1.时间复杂度,减少循环使用次数

2.空间复杂度的角度优化

并行框架

openMP了解一下,在关键的代码段加上omp并行处理

字节对齐

用好字节对齐功能可以优化cpu流水线的处理效率

内核态的利用

可以把一些业务操作写进驱动,利用操作系统的调度优化,内核态用户态哪一个更高效,这个是相对的,得看系统调用和库函数的颗粒度,可以值得尝试一下

线程调度

尝试调整一些线程的优先级提高调度效率,另外Linux也允许绑核操作

防御性编程

  • 申请一段buffer后总是习惯性的将其内容memset为0,当然这是针对plain类型的数据,防止在数据解析的时候解析到不合法的数据
  • 总是习惯性的判断数组的边界
  • 申请指针不应该悬空,应该给它一个值或者是nullptr,使用前判断它是否为空
  • 巧用断言

标签:技巧,复杂度,嵌入式,代码优化,线程,内存,拷贝,优化,指针
From: https://blog.51cto.com/hywing/8806041

相关文章

  • 一文带你了解LoRa微调语言大模型的实用技巧
    微调定制化的大型语言模型需要投入大量时间和精力,但掌握恰当的微调方法和技巧能显著提高效率。比如用LoRa(LLM的低秩适配Low-RankAdaptation)微调大模型,能够利用少量显卡和时间对大模型进行微调,降低成本。通过矩阵秩的分解,将原始模型的参数分解成两个小的矩阵乘积,仅训练这两个矩阵......
  • C语言技巧
    隐藏在C语言里面的奇技淫巧对齐到最近的8的倍数。这个表达式(size+7)&~(7)是一个常见的位操作技巧,用于将size向上对齐到最近的8的倍数。~(7):首先,7的二进制表示是0111。按位取反~操作会将所有的1变为0,所有的0变为1,所以~(7)就是1...1000。size+7:这个操作是将......
  • 嵌入式图像处理:算法、应用与性能优化
    嵌入式系统在现代科技中扮演着重要的角色,广泛应用于医疗设备、汽车、工业控制、智能家居等领域。嵌入式图像处理作为其中的一个关键组成部分,为许多应用提供了视觉感知能力。本文将介绍嵌入式图像处理的算法、应用以及性能优化方法,并提供相关的代码示例。嵌入式图像处理算法图像采集......
  • Vue后台项目开发必备:全面解析分辨率适配与网页缩放技巧!
    1.各屏幕分辨率下适配展示首先给大家展示一下我的屏幕分辨率兼容效果,方便大家来判断我的适配方案是否可行正常1920*1080100%1920*1080150%1440*900100%1440*900150%2.屏幕分辨率适配方案这里就不再过多举例了,通过这四张图可以看出来页面布局并没有受到过多的影响,所以直接上代......
  • Vue后台项目开发必备:全面解析分辨率适配与网页缩放技巧!
    1.各屏幕分辨率下适配展示首先给大家展示一下我的屏幕分辨率兼容效果,方便大家来判断我的适配方案是否可行正常1920*1080100%1920*1080150%1440*900100%1440*900150%2.屏幕分辨率适配方案这里就不再过多举例了,通过这四张图可以看出来页面布局并没有受到过多的影响,所以直接上代......
  • 嵌入式系统开发中常用的程序例程的简要介绍
    这些例程都是嵌入式系统开发中常用的程序,它们分别属于不同的领域和功能。以下是对这些例程的简要介绍:audio_codec:音频编解码器程序,用于处理音频数据的编码和解码。cherryusb:基于CherryPi的USB设备驱动程序,用于连接USB设备。coremark:一个用于测试处理器性能的基准测试程序......
  • 嵌入式系统开发中常用的程序这些例程的简要介绍和使用示例
    这些例程都是嵌入式系统开发中常用的程序。以下是对这些例程的简要介绍和使用示例:audio_codec:音频编解码器程序,用于处理音频数据的编码和解码。使用示例:#include"audio_codec.h"intmain(){AudioCodeccodec;uint8_tinput[]={0x01,0x02,0x03,0x04};uint8_......
  • mysql花式操作数据小技巧总结
    mysql花式操作数据小结本文是一片关于一些mysql小技巧的总结。主要内容包括:字段中包含多值、基于字段中某个值查询、基于身份证设置性别、身份证生成出生日期、增加表字段、一次搞定多个查询、关联删除、通过关系表一对多查询合并到一条记录、替代like1.字段中包含多值字段为cro......
  • [刷题技巧] 链表刷题技巧汇总
    链表的算法题中很常见的技巧:添加虚拟头结点,即dummy结点。当需要创造一条新链表的时候,可以使用虚拟头节点简化边界情况的处理。例如:LeetCode21.合并两个有序链表,让两条有序链表合并成一条新的有序链表,需要创造一条新的链表。例如,LeetCode86.分隔链表,把一条链表分解成两条链......
  • iMX287A嵌入式Qt环境搭建
    原文:https://zhuanlan.zhihu.com/p/111021921?utm_id=01.嵌入式Qt简介Qt是一个跨平台的应用程序开发框架。使用Qt开发的应用程序,只需要编写一套代码,然后把这套代码放在不同平台的Qt环境去编译,就会生成可以运行在对应平台的应用程序。例如,我在Windows写了一个串口助手,这套代......