最近给之前测试Dhrystone的代码增加了GCC的Makefile,刚好对比一下AC6和GCC的编译结果。 测试平台:GD32F103C8T6,Cortex-M3核心,8M主频。测试代码除了startup文件以外完全相同。 编译器版本分别为:GCC v9.2.1和AC6 v6.13.1 测试结果如下: - GCC -Os面积优化,代码尺寸11136字节,运行时间115.5ms
- AC6 -Oz面积优化,代码尺寸8536字节,运行时间64.88ms
- GCC -O3速度优化,代码尺寸15484字节,运行时间67.89ms
- AC6 -O3速度优化,代码尺寸16976字节,运行时间45.92ms
如果优化目标是代码体积,那么如11136/8536=1.305,115.5/64.88=1.779,GCC体积大了三成,速度慢了近八成。 如果优化目标是执行速度,那么67.89/45.92=1.478,GCC速度慢了近五成,体积倒是小了9%左右。 AC6的面积优化执行速度比GCC的速度优化还要快一点。 此外GCC都是开了`-fdata-sections -ffunction-sections -Wl,--gc-sections`选项的,否则面积优化和速度优化GCC代码体积分别是19376和26448字节。分别还要增加七成。
从测试结果来看,都是AC6明显占优。
|