初级会员

- 积分
- 113
- 金钱
- 113
- 注册时间
- 2014-2-4
- 在线时间
- 22 小时
|
之前一直用V5编译器的,要么编译很慢,要么取消browse information就不能快速跳转到符号定义了。
今天尝试把程序改到V6编译器,V6编译速度果然给力,但是代码质量如何呢,我做了下测试。
2个程序基本一样,第一个是32位+8位运算,第二个为8位运算为主,单片机为H743,使用keil仿真计时,并非在实际单片机上运行。程序不一样结果也有差别,结果仅供参考。
没有配置时钟,没有中断之类的命令,也没有用浮点。检验过CRC的结果。
测试代码:CRC16为8bit字节运算,2个排序算法则分别设置为8位和32位运算
for(j=0;j<100;j++){
for(i=0;i<size;i++)buf=i*234657681+56232;
Heap_Sort(buf,size);
for(i=0;i<size;i++)buf=i*234657681+56232;
Insertion_Sort(buf,size);
i=CRC16((u8*)buf,size);
}
32位排序+8位CRC运算 | | 8位排序+8位CRC | | ARMCC V6 | | | | | | ARMCC V6 | | | | | | 速度优化 | | | | 速度优化 | 优化 | 运行时间 | 代码长度 | 运行时间 | 代码长度 | | 优化 | 运行时间 | 代码长度 | 运行时间 | 代码长度 | O0 | 9169 | 1632 | 8250 | 1628 | | O0 | 9678 | 1612 | 8691 | 1600 | O1 | 2264 | 772 | 1705 | 1360 | | O1 | 2259 | 732 | 1765 | 1120 | O2 | 1767 | 1552 | 1751 | 1392 | | O2 | 1853 | 1320 | 1798 | 1076 | O3 | 1767 | 1552 | 1751 | 1392 | | O3 | 1853 | 1320 | 1798 | 1076 | Of | 1767 | 1552 | 1751 | 1392 | | Of | 1853 | 1320 | 1798 | 1076 | Os | 2279 | 772 | 2112 | 676 | | Os | 2269 | 736 | 2109 | 632 | Oz | 2467 | 672 | 2472 | 652 | | Of | 2603 | 632 | 2603 | 644 | | | | | | | | | | | | | ARMCC V5 | | | | | | ARMCC V5 | | | | O0 | 2573 | 712 | | | | O0 | 2696 | 656 | 2696 | 656 | O1 | 2187 | 668 | 2167 | 704 | | O1 | 2295 | 636 | 2276 | 676 | O2 | 2185 | 660 | 2136 | 716 | | O2 | 2294 | 620 | 2244 | 692 | O3 | 2185 | 664 | 2070 | 764 | | O3 | 2294 | 628 | 2180 | 736 |
|
|