如何优化 kei5 可以使代码运行最快效率最高?

2019-07-14 17:04发布

最近做个项目使用到优化的时候,一直有一些疑问:
1,使用的是STM32F1,刚开始的时候使用O1级别优化,调试完成之后,改成了O2,做斜率的时候,明显感觉到了程序速度提升近2倍。而且其它的感觉也比以前块,以eeprom为例,本来O1的时候完全没问题,改成O2 后,就只能读不能写,找了半天才发现时序变了。
2,C++ Code Generation 里面那么多选项,那些选项除了常用几个,其他具体都是做什么用的,感觉搞得不
   是很明白,希望高手解答??
3,怎么样选择能使程序跑的最快,怎么样选择能使代码量最小了,感觉搞得也不是特别明白
说明:我程序在选择O1优化时候为81k左右,选择O2时降低到了73K左右,选择O3时候跟O1差不多,但是速度方面,O2和O3差的不多,跟O1都有明显提升



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
ZXH22770
1楼-- · 2019-07-15 23:17

O0基本不优化
O1优化比较少。调试版本用。
O2加入了几个最实用的优化功能。基本没有优化出来的bug,推荐测试和发布版本用。典型比O1节省30%的程序空间,速度上也能快30%,如果循环多的话能快50%;
O3加入了很多怪异的优化功能,但是总体效果比O2的改进不明显,反倒在复杂代码的时候会出问题。而且O3的很多优化是互相矛盾的。比如速度和时间的权衡等,及个别时候会导致运行不如O2块,flash占用也比O2大的现象。但是总体来看,比如O2还是有一点点的效果。

Thumb比Arm能节省大约30%的代码空间,但是速度会慢30%左右,如果加密运算等移位加数**算多的时候ARM比Thumb能提高更多的速度也是有可能的。

储蓄叛逆
2楼-- · 2019-07-16 02:22
运行快慢,效率高低,跟系统时钟和如何写代码有一定关系
fhdgxfvx
3楼-- · 2019-07-16 06:36
在写代码,先写好框架,尽量模块化,比这个软件优化强多了。
hdfsf
4楼-- · 2019-07-16 11:25
 精彩回答 2  元偷偷看……
我在线中
5楼-- · 2019-07-16 13:19
是的,所以,这里短延时,比如空操作,我不会用C认可的空操作指令,而是插入汇编代码来做,系统优化一般不会将汇编代码优化掉的,反正我是没发现。
niggle
6楼-- · 2019-07-16 15:12
延时代码要不受优化影响,比如使用定时器

一周热门 更多>