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 |