本帖最后由 vyxc 于 2019-9-6 23:40 编辑
经常在各个群里看到有人说ARMCC的V6编译器 编译速度有多快,编译出来的bin体积有多小。而在我的映像里 V6并没有这么神。
为了客观的对比各个编译器,我做了个简单的测试。
条件:
1:一样的工程,除了CMSIS需要不一样的头文件之外,所有用户代码完全一致。
2:用秒表计时,开始计时和全部重新编译按钮同时按下,编译完成时停止。因为手动掐表,肯定会有误差,但是大致的可以参考。(正常使用的时候 零点几秒的时间差对使用体验的影响可以忽略)
3:ARMCC的V5 和 V6 都是keil的自带编译器,所以 IDE 是keil。 GCC的IDE是visual studio 2017 + visualGDB插件。
4:使用台式机编译,因为笔记本可能过热降频影响测试数据。CPU是 E3 1230 V2 4核8线程
编译的文件列表:
ARMCC V5的编译设置:
ARMCC V6的编译设置:
GCC的编译设置:
经过几次的编译测试得到以下数据:
| 优化选项 | O0 | O1 | O2 | O3 | Ofast | Os | Oz | ARMCC V6.9 | bin大小(KB) | 131.13 | 90.03 | 95.54 | 98.54 | 97.45 | 87.84kB | 85.47 | 编译用时(秒) | 7.23 | 7.52 | 7.99 | 8.3 | 8.4 | 8.17 | 7.64 | ARMCC V5.06 | bin大小(KB) | 77.18 | 64.49 | 61.19 | 61.44 | - - | - - | - - | 编译用时(秒) | 7.93 | 8.25 | 8.15 | 9.68 | - - | - - | - - | GCC 7.2 | bin大小(KB) | 176 | 135 | 136 | 144 | - - | 129 | - - | 编译用时(秒) | 3.49 | 3.63 | 3.68 | 4.12 | - - | 3.96 | - - |
可以得知,GCC的编译速度是最快的(KEIL和visualGDB都是开启多线程编译的)。而bin体积最小的是ARMCC V5。代码的执行效率没有测。
而ARMCC V5和V6对比,编译用时差异不大,手动掐表可以认为是误差范围内。但是bin体积 V5比V6小很多。
结束。
|