社区
C++ 语言
帖子详情
嵌入式编程,函数是不是尽量避免调用层次太深?
bdview
2020-04-12 11:14:30
我写嵌入式软件,喜欢把底层的一些通用的代码抽象成通用的函数,供各个部分调用。不过有的地方经过几层抽象形成一个函数里面一层一层的函数调用,比如:
例如有四个函数A,B,C,D;
函数A调用函数B,函数B调用函数C, 函数C调用函数D。
然后同事说不要封装那么多次,是不是调用层数太多效率影响比较大?(每一层都需要将参数和然后地址压栈,还有调用后返回,封装太多层是不是就这些事情影响效率?影响多大?)
...全文
222
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
打赏
举报
回复
每调一次都多一次入栈和出栈的过程,这个过程对效率损失多大看你的环境了。
初级
嵌入式
编程
之Linux系统基础教程
Linux操作系统是
嵌入式
编程
的平台,在学习
嵌入式
编程
之前,首选要学会如何使用Linux操作系统,本教程就是介绍Linux操作系统基本使用方法。
嵌入式
编程
和PC
编程
的区别
关注、星标公众号,直达精彩内容来源:网络素材在中国,
嵌入式
编程
的朋友很少是正儿八经从计算机专业毕业的,都是从自动控制啊,电子相关的专业毕业的。这些童鞋们,实践经验雄厚,但是理论知识缺乏;计算机专业毕业...
嵌入式
编程
和PC
编程
究竟有何区别?
在中国,
嵌入式
编程
的朋友很少是正儿八经从计算机专业毕业的,都是从自动控制啊,电子相关的专业毕业的。这些童鞋们,实践经验雄厚,但是理论知识缺乏;计算机专业毕业的童鞋很大一部分去弄网游、网页这些独立于操作...
闲谈
嵌入式
编程
的复杂性
学会用
嵌入式
编程
思想,那是第二步;用PC的思想和
嵌入式
的思想结合在一起,应用于实际的项目,那是第三步。很多朋友都是从PC
编程
转向
嵌入式
编程
的。在中国,
嵌入式
编程
的朋友很少是正儿八经从计算机专业毕业的,都是...
深入理解
函数
调用
过程以及
函数
栈的变化
前言: ...接下来将解开
函数
调用
的神秘面纱! 1 栈帧(Stack Frame) 从逻辑上讲,栈帧就是一个
函数
执行的环境:
函数
参数、
函数
的局部变量、
函数
返回地址。每个
函数
的每次
调用
,都有它自己独立...
C++ 语言
64,691
社区成员
250,497
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章