社区
C++ 语言
帖子详情
嵌入式编程,函数是不是尽量避免调用层次太深?
bdview
2020-04-12 11:14:30
我写嵌入式软件,喜欢把底层的一些通用的代码抽象成通用的函数,供各个部分调用。不过有的地方经过几层抽象形成一个函数里面一层一层的函数调用,比如:
例如有四个函数A,B,C,D;
函数A调用函数B,函数B调用函数C, 函数C调用函数D。
然后同事说不要封装那么多次,是不是调用层数太多效率影响比较大?(每一层都需要将参数和然后地址压栈,还有调用后返回,封装太多层是不是就这些事情影响效率?影响多大?)
...全文
305
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
打赏
举报
回复
每调一次都多一次入栈和出栈的过程,这个过程对效率损失多大看你的环境了。
嵌入式
开发中的堆与栈:内存管理的双刃剑
本文深入探讨
嵌入式
开发中堆与栈内存管理的核心机制与常见问题。栈内存自动管理但空间有限,易导致栈溢出;堆内存可动态分配但需手动释放,存在内存泄漏和碎片化风险。文章提供了实用的调试技巧和优化策略,帮助开发者有效管理
嵌入式
系统的有限内存资源。
Arm设计思想与高效C语言
编程
联系
一.RISC设计思想 ARM内核采用RISC体系结构。RISC是一种设计思想,其目标是设计出一套能在高时钟频率下单周期执行,简单而有效的指令集。RISC的设计重点在于由硬件执行的指令的复杂度,这是因为软件比硬件容易提供更大的灵活性和更高的智能。因此,RISC设计对编译器有更高的要求;相反,传统的复杂指令集的计算机(CISC)则更侧重于硬件执行指令的功能性,使CISC变得更复杂。 RISC设计思...
Arm设计思想与高效C
编程
http://blog.csdn.net/woshixingaaa/archive/2011/03/15/6249767.aspx
ARM设计思想与高效C
编程
ARM内核采用RISC体系结构。RISC是一种设计思想,其目标是设计出一套能在高时钟频率下单周期执行,简单而有效的指令集。RISC的设计重点在于由硬件执行的指令的复杂度,这是因为软件比硬件容易提供更大的灵活性和更高的智能。因此,RISC设计对编译器有更高的要求;相反,传统的复杂指令集的计算机(CISC)则更侧重于硬件执行指令的功能性,使CISC变得更复杂。 RISC设计思想主要由下面4个设计准则
C++ 语言
65,214
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章