打印
[AVR单片机]

不同编译器下 AVR Whetstone Benchmark 得分

[复制链接]
3807|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 | 只看该作者

赫赫,有意思的评测

使用特权

评论回复
5
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

使用特权

评论回复
6
BitFu| | 2008-8-28 14:02 | 只看该作者

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

支持一下。

使用特权

评论回复
7
真水无香| | 2008-8-29 16:29 | 只看该作者

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

使用特权

评论回复
8
老虎今晚打| | 2008-8-31 01:06 | 只看该作者

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

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

CV和ICC都用过,Demo测试都不如GCC -O3,奇怪GCC -O3测试的时候挺好,做项目就抓瞎了。因为Demo都没过,这两种编译器没用在实际应用里面。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

0

帖子

1

粉丝