keil优化级别不同,居然会差那么大?

2019-07-20 23:40发布

昨天搞了个程序,使用优化level 3,结果编译出来在主界面上正常,进入另一个函数界面后居然会出现意想不到的效果,本来正常的刷屏变成了闪烁的,有时直接死掉,因为程序是FM的界面,连FM也会卡卡声,开始还以为是硬件问题,FM输出音频带不动。后来放着,又搞了一个界面,这个界面也不正常了,出现了同样问题,然后fm那个界面又正常了,无语中。。。。。。然后重新选了下优化级别,结果都正常了,,,晕死,,有没有同样问题的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
ssssssssssss
1楼-- · 2019-07-22 13:21
jermy_z 发表于 2018-7-12 09:59
不优化

我在网上找资料看到如下,平常的话我们默认应该是0,如果选择1的话消除死码的话,应该不会出问题吧?


0级优化:
1、 常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。
2、 简单访问优化:对8051系统的内部数据和位地址进行访问优化。
3、 跳转优化:编译器总是将跳转延至最终目标上,因此跳转到跳转之间的命令被删除。
1级优化:
1、 死码消除:无用的代码段被消除。
2、 跳转否决:根据一个测试回溯,条件跳转被仔细检查,以决定是否能够简化或删除。
jermy_z
2楼-- · 2019-07-22 15:41
ssssssssssss 发表于 2018-7-12 10:34
我在网上找资料看到如下,平常的话我们默认应该是0,如果选择1的话消除死码的话,应该不会出问题吧?

...

除了芯片资源不够了(比如ROM不足)开优化,其余时间不建议开优化
钩月黄昏
3楼-- · 2019-07-22 21:38
优化等级是level0和default是同一个级别吗?level0是不是不优化?
ssssssssssss
4楼-- · 2019-07-23 02:38
 精彩回答 2  元偷偷看……
gotofly21
5楼-- · 2019-07-23 05:16
 精彩回答 2  元偷偷看……
yuqingli
6楼-- · 2019-07-23 09:59
jermy_z 发表于 2018-7-12 09:59
不优化

我都是默认最高优化,速度提升很明显。单片机本身就不快,开优化能提升性能。

一周热门 更多>