xiejun 发表于 2010-3-11 19:29:31

keilMDK 的优化水平在下降吗,同个项目文件,MDK3.5 的优化 比MDK 4.10的好些?

还是上次的stm32sky001,优化等级-O3

MDK 3.5

Program Size: Code=25736 RO-data=3888 RW-data=672 ZI-data=7464

MDK 4.10

Program Size: Code=26346 RO-data=3902 RW-data=672 ZI-data=7464

aozima 发表于 2010-3-11 21:44:17

code小就是优化强? 反之就弱?
把运算换成查表法size变大了,是优? 是劣?

当然,我不是说4.10就一定强,你需要找出具体差异处,然后看看具体的指令,就知道哪个更强了.

lvhaian 发表于 2010-3-11 21:55:57

我也发现同样问题 还没有找到答案.

aozima 发表于 2010-3-11 22:03:44

对比下map文件,看看是哪里大了.

xiejun 发表于 2010-3-11 22:29:09

回复【1楼】aozima
code小就是优化强? 反之就弱?
把运算换成查表法size变大了,是优? 是劣?
当然,我不是说4.10就一定强,你需要找出具体差异处,然后看看具体的指令,就知道哪个更强了.
-----------------------------------------------------------------------

当然还要看执行速度,但是,按照常理,同样的选项下(有个选项是优化时间的,我没选),应该是新版本代码更少的吧。



刚刚选了优化时间再重新编译,发现变得更大了

Program Size: Code=31226 RO-data=4022 RW-data=672 ZI-data=7464

但是我认为这是正常的。

aozima 发表于 2010-3-11 22:53:33

对比了前后的map文件.发现多个文件都比3.*的大了2~4字节,可以确认是4.*的armcc优化策略不同,但实在是不好找出具体的指令.不知道有什么方法可以快速查找?

xiejun 发表于 2010-3-11 22:57:19

我也正在查找,但是我找不到MDK输出汇编的选项,不然的话,可以用UE比较一下汇编文件,看看那里有差别。

aozima 发表于 2010-3-11 23:12:42

找到一些区别:
      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
3.80a
      1594      176      341          2      112      12904   codec.o
      1598      178      341          2      112      12592   codec.o
4.10

区别
;;;608                    codec.offset = 0;
0000582000            MOVS   r0,#0
00005a3568            ADDS   r5,r5,#0x68
;;;609                    codec.read_index = next_index;
00005c6068            STR      r0,; codec
00005e802c            STRH   r4,
;;;610                    if (next_index == codec.put_index)
0000608868            LDRH   r0,; codec
00006242a0            CMP      r0,r4
000064d109            BNE      |L9.122|

;;;608                    codec.offset = 0;
0000582000            MOVS   r0,#0
00005af1050568          ADD      r5,r5,#0x68
;;;609                    codec.read_index = next_index;
00005e6068            STR      r0,; codec
000060802c            STRH   r4,
;;;610                    if (next_index == codec.put_index)
0000628868            LDRH   r0,; codec
00006442a0            CMP      r0,r4
000066d109            BNE      |L9.124|

./bbs_upload/files_27/ourdev_537913.jpg

xiejun 发表于 2010-3-11 23:18:01

回复【7楼】aozima
-----------------------------------------------------------------------

谢谢你~~

huike 发表于 2010-3-12 08:30:36

所以UV4也可以让你把工程返回到UV3的状态下去。

哥的帅不能当饭吃,想要贤慧的还是老的好。

ffxz 发表于 2010-3-12 09:06:12

回复【9楼】huike
所以UV4也可以让你把工程返回到UV3的状态下去。
哥的帅不能当饭吃,想要贤慧的还是老的好。
-----------------------------------------------------------------------

发现装了UV4,原来的UV3打开UV3的工程就不能编译通过了,应该是UV4设置了什么路径,使得UV3找不到原来的路径了。这个有什么解决办法?先装UV4再装UV3?
(因为CM0的缘故不得不装UV4)

fengpc 发表于 2010-3-12 09:29:05

装了MDK4之后编译速度比以前慢了很多

lvhaian 发表于 2010-3-12 09:32:37

(因为CM0的缘故不得不装UV4)

同样原因, 而且是不得不升级了 ulink2 .

amwox 发表于 2010-4-26 20:56:32

看看这里这不是我勾上了?
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_549471.JPG
(原文件名:123.JPG)
页: [1]
查看完整版本: keilMDK 的优化水平在下降吗,同个项目文件,MDK3.5 的优化 比MDK 4.10的好些?