社区
C++ 语言
帖子详情
嵌入式编程,函数是不是尽量避免调用层次太深?
bdview
2020-04-12 11:14:30
我写嵌入式软件,喜欢把底层的一些通用的代码抽象成通用的函数,供各个部分调用。不过有的地方经过几层抽象形成一个函数里面一层一层的函数调用,比如:
例如有四个函数A,B,C,D;
函数A调用函数B,函数B调用函数C, 函数C调用函数D。
然后同事说不要封装那么多次,是不是调用层数太多效率影响比较大?(每一层都需要将参数和然后地址压栈,还有调用后返回,封装太多层是不是就这些事情影响效率?影响多大?)
...全文
297
5
打赏
收藏
嵌入式编程,函数是不是尽量避免调用层次太深?
我写嵌入式软件,喜欢把底层的一些通用的代码抽象成通用的函数,供各个部分调用。不过有的地方经过几层抽象形成一个函数里面一层一层的函数调用,比如: 例如有四个函数A,B,C,D; 函数A调用函数B,函数B调用函数C, 函数C调用函数D。 然后同事说不要封装那么多次,是不是调用层数太多效率影响比较大?(每一层都需要将参数和然后地址压栈,还有调用后返回,封装太多层是不是就这些事情影响效率?影响多大?)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
akari10032
2020-04-13
打赏
举报
回复
尽量还是封装吧,要不然编出来的bin文件会变大
bdview
2020-04-13
打赏
举报
回复
引用 3 楼 千梦一生 的回复:
嗯 谢谢。知乎有个人回答的也很好,你的意思和他一样,分享一下 如果做的嵌入式设备的性能确实非常有限,考虑一下这个还行。不过大体上不用关心这些,如果函数很简单就加inline, 需要优化的话编译器会帮你做的。大体上开发人员写出来的代码并不是给机器看,而是给以后的你自己和同事看的,所以可读性、封装、解耦比“少嵌套调用函数以提高性能”这一点重要得多。函数调用本身的性能开销非常低,如果真到了这点性能都需要优化的时候……重构了解一下? 至于楼上说的爆栈,这种情况确实存在。但爆栈一般发生在无限递归的情况下,普通的函数调用并不会一直调用下去,还有出栈呢。你可以留意一下你可用的栈空间多大,每个函数的调用栈多大,可以给出一个栈深度的大体数量级,一般(不含有或少含有递归的)程序不会超过这个数量级的。 作者:程与童 链接:https://www.zhihu.com/question/387283327/answer/1149128915 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
千梦一生
2020-04-13
打赏
举报
回复
主要还是看情况。像易用性、共用性、可读性来看自然需要封装函数。但不可避免又有损失。有得必有失。其实只要不是在进行大量递归。多调用有数几次吧,除了栈会抬高一些。速度损失不会特别大(数个指令*调用次数)。
总的说看实际情况。随意写、先实现,根据具体情况再优化
千梦一生
2020-04-13
打赏
举报
回复
是的,其实任何深层次调用都有损失。
嵌入式一般对这些要求较高,没有太大必要更应该减少深层次调用。
冷风1023
2020-04-13
打赏
举报
回复
每调一次都多一次入栈和出栈的过程,这个过程对效率损失多大看你的环境了。
嵌入式
开发中的堆与栈:内存管理的双刃剑
本文深入剖析
嵌入式
系统中堆与栈的工作机制:栈用于自动管理
函数
调用
和局部变量,易发栈溢出;堆支持动态内存分配,但存在内存泄漏与碎片化风险。重点涵盖分配原理、典型问题(如栈溢出、内存泄漏)、协同配置策略及调试优化方法,并介绍内存池、静态分配、RTX/FreeRTOS监控等实战技术。
Arm设计思想与高效C语言
编程
联系
本文深入探讨了ARM内核采用的RISC设计思想及其在
嵌入式
系统中的应用,同时提供了C语言
编程
中针对ARM内核优化的策略,包括数据类型的有效使用、循环体优化、寄存器分配、
函数
调用
优化、结构体安排等关键点。
Arm设计思想与高效C
编程
本文探讨了ARM处理器的RISC设计思想,强调了简化指令集、流水线、寄存器使用和load-store结构。同时,介绍了ARM如何适应
嵌入式
系统需求。在C
编程
方面,提出了有效利用数据类型、编写高效循环、寄存器分配、
函数
调用
优化以及结构体安排的建议,以提升代码执行效率。
ARM设计思想与高效C
编程
本文介绍ARM内核的RISC设计原理及其在
嵌入式
系统中的应用特点,同时提供了编写高效C代码的建议,包括数据类型的合理使用、循环优化、寄存器分配等。
2011-08-02 11:38 Arm设计思想与高效C
编程
本文深入探讨了ARM处理器的设计思想,包括RISC体系结构的特点与ARM内核的特殊设计,以及针对ARM平台的C
编程
优化策略,旨在提高程序性能与减少功耗。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章