OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3078|回复: 2

关于主函数whil循环调用多个函数执行,和直接代码执行,哪个效率高的问题。

[复制链接]

21

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2016-2-19
在线时间
46 小时
发表于 2016-6-24 10:08:18 | 显示全部楼层 |阅读模式
主函数while中多段代码,是将代码封装成多个函数,去调用多个函数执行,还是直接贴代码在主函数while中运行 哪个效率高?是不是调用了很多个函数 导致慢了,高手从编译 运行角度解读下啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-6-24 10:17:41 | 显示全部楼层
需要看你是说哪个效率了。如果从运行效率上来说,当然是贴代码速度高,因为调用函数涉及到程序跳转、改变指令流水线和堆栈操作。但是,一般说来,这些操作对于现在的CPU来说影响很小。此外,这样还会减少空间效率(代码大小)。
然而,从另一个方面——程序编写和维护效率——来说,调用函数能够简化编写与维护难度,程序结构更加清晰,可读性强,复用性高。对于当今的CPU来说,这个往往更重要。
【程序优化原则】:除非是要求极致性能的场合,否则只应当优化占用80%时间的“热点”区域,例如多重循环的最深层循环
回复 支持 反对

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2016-6-24 10:31:01 | 显示全部楼层
对这个没啥研究,说说我的看法吧。

个人认为,如果函数之间不发生调用的话,直接贴代码和写成函数的形式是无差别的。
如果函数之间发生调用的话,就有差别,因为父函数调用子函数的时候,需要保存一些值。
根据AAPCS,父函数调用子函数,要保存子函数的入口参数,LR,PC等一系列的东西,返回时还要恢复现场,会占有点时间。
但是如果写成代码的形式,没法解决代码复用的问题,会浪费大量的FLASH。一般不会差这单时间吧。

有不对的地方还请各位前辈指出。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 13:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表