社区
C++ 语言
帖子详情
嵌入式编程,函数是不是尽量避免调用层次太深?
bdview
2020-04-12 11:14:30
我写嵌入式软件,喜欢把底层的一些通用的代码抽象成通用的函数,供各个部分调用。不过有的地方经过几层抽象形成一个函数里面一层一层的函数调用,比如:
例如有四个函数A,B,C,D;
函数A调用函数B,函数B调用函数C, 函数C调用函数D。
然后同事说不要封装那么多次,是不是调用层数太多效率影响比较大?(每一层都需要将参数和然后地址压栈,还有调用后返回,封装太多层是不是就这些事情影响效率?影响多大?)
...全文
260
5
打赏
收藏
嵌入式编程,函数是不是尽量避免调用层次太深?
我写嵌入式软件,喜欢把底层的一些通用的代码抽象成通用的函数,供各个部分调用。不过有的地方经过几层抽象形成一个函数里面一层一层的函数调用,比如: 例如有四个函数A,B,C,D; 函数A调用函数B,函数B调用函数C, 函数C调用函数D。 然后同事说不要封装那么多次,是不是调用层数太多效率影响比较大?(每一层都需要将参数和然后地址压栈,还有调用后返回,封装太多层是不是就这些事情影响效率?影响多大?)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
每调一次都多一次入栈和出栈的过程,这个过程对效率损失多大看你的环境了。
嵌入式
C语言面试题汇总
第一部分:基本概念及其它问答题 第二部分:程序代码评价或者找错 第三部分:
编程
题
经典
嵌入式
Linux面试题
这个文件总结了很多
嵌入式
Linux的面试题,花了很多心血!!很全面,值得你拥有
嵌入式
C语言面试题汇总(超经典).docx
。。。
com.cortexm3.exception.StackOverflowException(解决方案).md
开发中碰到的报错,问题已解决,写个文档记录一下这个问题及解决方案
嵌入式
软件工程师面试题——2025校招社招通用(C/C++)(三十七)
嵌入式
面试题--C/C++
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章