H743XI上,同样的代码,使用MDK和CubeIDE编译生成的可执行程序,执行效率不同 代码由cubeMX生成,仅初始化了MPU及Icache、Dcache,HAL库版本1.9.1 补充:相同的编译器、相同的的优化等级之下,cubeIDE产生的目标程序比MDK产生的目标程序,运行效果慢了一百倍。 cubeIDE使用gcc编译器的情况下,相同的优化等级,运行效率大概会低五倍。 用于测试运行效率的代码如下: 因为贴代码段出现问题,此处贴图片 |
STM32H750内部flash读写
keil安装pack中提示Encountered an improper argument. 如何解决
STM32H743采用flash swap 进行IAP升级,reset后启动不了
STM32双核H7核间通信的方法
stm32cubide搜索不到.h文件里的文本
stm32cubeide-boot loader跳转APP异常问题
我用过stm32cubemax 但是我给stm32cubeide整服了
STM32H743IIC,HAL库驱动硬件I2C,hi2c2.state一直是busy. 为什么?
H747 DSI 模块的官方例程跑不通
MAC回环或以太网PHY芯片回环怎么实现?
不同的编译器,编译方式,优化规则,链接方式等也会不同的。没有一致的前提条件,不好比较哦。一般来说,有哪个编译器资源就用哪个,达到设计目标就行。 区别肯定是有的哈~~
这2个是不同编译器,可能优化等级效果不一样
而且你不同的优化策略,生成的代码大小跟执行效率都不一样
编译器是不一样,在cubeIDE里面调整了编译器。相同的优化等级之下,cubeIDE产生的目标程序运行效率还是比MDK的目标程序效率低了一百倍。
编译器是不一样,在cubeIDE里面调整了编译器。相同的优化等级之下,cubeIDE产生的目标程序运行效率还是比MDK的目标程序效率低了一百倍。
[md]现在是想通过cubeIDE来是搭建工程,但是cubeIDE生成的目标代码云心效率太低了。想找找看能不能有提升效率的方式。
代码容量、执行效率会基于不同的应用而有不同的取舍或偏好。这个话题有点大,总之,存在执行效率的差异是正常的。
之前看过一个编译器coremark的比较,在极限性能优化
AC6 -Omax+lto
GCC -Ofast+lto
AC6的跑分差不多是GCC的1.6倍 甚至ROM占用还要更小点
建议开发arm的要不然使用AC6要不然使用IAR,其他环境还是洗洗睡了
感觉差异有点大,差个一两倍还是能接受的,但是差个五倍,导致一个功能无法正常工作,这个有点难以接受了。
现在用的AC5,AC6同事们不让用,说是有bug。。。 能接受编译之后代码由差异,但是同样的工程在MDK和cubeIDE上,五倍的运行效率,这个有点离谱了。
5倍有点离谱了,你用的啥优化等级
AC6现在已经进入稳定版了,最近几次Keil的更新AC6编译器版本已经稳定了
STM32CubeIDE上使用GCC,与MDK用AC5对比,确实是5倍。现在已经弃坑STM32CubeIDE了,但我觉得,应该还是要切回到STM32CubeIDE的,毕竟MDK收费。看看有没有办法优化一下吧。