[AVR单片机] 不同编译器下 AVR Whetstone Benchmark 得分

[复制链接]
4866|7
 楼主| soso 发表于 2008-8-7 04:28 | 显示全部楼层 |阅读模式
AVR 上常用编译工具有 ImageCraft,IAR,WinAVR 等。在选择用哪种工具时,这些工具生成的目标代码的性能,应该是要考虑的重要因素之一。

Whetstone 是过去常用的一种测定 CPU 浮点性能的指标。本人将 Whetstone 移植到 AVR C 平台,对 ImageCraft, IAR, WinAVR 三种编译器进行了测试比较,结果是颇为有意思的。

测试用的目标电路板以 Atmega64 为 MCU,主频 11.0520 MHz。板上有 RS232 串口,可以将运行信息送往 PC 显示。

测试程序如附件所示。其中包含了 ImageCraft, IAR, 和 WinAVR 的工程文件和编译结果。

所用编译器都是最新版本,ImageCraft 是 7.18A, IAR 是 5.11B, WinAVR 是 20080610。

测试时记录了生成的代码长度,1000 次 Whetstone 迭代所需运行时间和 Whetstone 评分,此评分是由程序自己计算出来的。

评价的规则是,目标代码长度越小越好,运行时间越短越好,Whetstone 评分越高越好。

运行记录如下:

WinAVR    代码长度     时间(s)      Whetstone(KWIPS)
 -OS       7392         228          438
 -O0      11638         263          380
 -O1       7598         235          425 
 -O2       7408         227          440
 -O3       8680         133          751


ImageCraft 
           7128         787          127

IAR
-debug     8754         446          224

-Low Optimized 
           8380         440          227

-Medium Optimized 
           6960         436          229

-Max optimized
           5998         446          224


一点结论:
在运行速度方面,WinAVR 是远远领先的。在代码长度方面,IAR 则要好得多。
ICC 的代码长度比较好,但是速度就慢得多了。




相关链接:https://bbs.21ic.com/upfiles/img/20079/200792241125188.rar
pheavecn 发表于 2008-8-7 16:03 | 显示全部楼层

IAR是大小优化的吧,设成速度优化看看。

 楼主| soso 发表于 2008-8-7 20:49 | 显示全部楼层

IAR 的测试代码就是按速度优化编译的

结果和按大小编译一样。估计 IAR 的速度优化就是一个幌子,没有什么用。

笑苍天 发表于 2008-8-8 16:14 | 显示全部楼层

赫赫,有意思的评测

yyccaa 发表于 2008-8-27 22:34 | 显示全部楼层

.

AVR Memory Usage
----------------
Device: atmega64

Program:    5030 bytes (7.7% Full)
(.text + .data + .bootloader)

Data:        353 bytes (8.6% Full)
(.data + .bss + .noinit)


Build succeeded with 0 Warnings...

winavr20071221.
不知道楼主是否有空帮忙测试下,看能否正常运行。
使用自定义makefile,如果要测不同优化级别的话,要手动修改defaultMakefileGlb文件里的-0s为其它级别,再rebuild all.

相关链接:https://bbs.21ic.com/upfiles/img/200710/20071012225049893.rar
BitFu 发表于 2008-8-28 14:02 | 显示全部楼层

这是一个非常有意思的研究

支持一下。
真水无香 发表于 2008-8-29 16:29 | 显示全部楼层

楼主有没有测试过 优化过程序运行还正常吗?

老虎今晚打 发表于 2008-8-31 01:06 | 显示全部楼层

04年有个项目用过AVR,说说

GCC -O3 完全编译不出可用代码。
GCC -O2 及其以下可用,但代码长度和执行效率无法跟IAR比较。

CV和ICC都用过,Demo测试都不如GCC -O3,奇怪GCC -O3测试的时候挺好,做项目就抓瞎了。因为Demo都没过,这两种编译器没用在实际应用里面。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

0

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部