你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

H743XI上,同样的代码,使用MDK和CubeIDE编译生成的可执行程序,执行效率不同

[复制链接]
长安_yq 提问时间:2022-4-6 16:24 / 已解决

H743XI上,同样的代码,使用MDK和CubeIDE编译生成的可执行程序,执行效率不同

代码由cubeMX生成,仅初始化了MPU及Icache、Dcache,HAL库版本1.9.1

补充:相同的编译器、相同的的优化等级之下,cubeIDE产生的目标程序比MDK产生的目标程序,运行效果慢了一百倍。

cubeIDE使用gcc编译器的情况下,相同的优化等级,运行效率大概会低五倍。

用于测试运行效率的代码如下: 因为贴代码段出现问题,此处贴图片 无标题.png

无标题.png
收藏 评论12 发布时间:2022-4-6 16:24

举报

12个回答
butterflyspring 最优答案 回答时间:2022-4-7 11:42:56

不同的编译器,编译方式,优化规则,链接方式等也会不同的。没有一致的前提条件,不好比较哦。一般来说,有哪个编译器资源就用哪个,达到设计目标就行。 区别肯定是有的哈~~

落花又见流水 回答时间:2022-4-6 17:24:50

这2个是不同编译器,可能优化等级效果不一样

奇迹 回答时间:2022-4-6 19:01:18
这肯定不一样啊,编译器都不一样
而且你不同的优化策略,生成的代码大小跟执行效率都不一样
长安_yq 回答时间:2022-4-7 08:35:37

落花又见流水 发表于 2022-4-6 17:24
这2个是不同编译器,可能优化等级效果不一样

编译器是不一样,在cubeIDE里面调整了编译器。相同的优化等级之下,cubeIDE产生的目标程序运行效率还是比MDK的目标程序效率低了一百倍。

长安_yq 回答时间:2022-4-7 08:36:07

奇迹 发表于 2022-4-6 19:01
这肯定不一样啊,编译器都不一样
而且你不同的优化策略,生成的代码大小跟执行效率都不一样
...

编译器是不一样,在cubeIDE里面调整了编译器。相同的优化等级之下,cubeIDE产生的目标程序运行效率还是比MDK的目标程序效率低了一百倍。

长安_yq 回答时间:2022-4-7 13:40:19

butterflyspring 发表于 2022-4-7 11:42
不同的编译器,编译方式,优化规则,链接方式等也会不同的。没有一致的前提条件,不好比较哦。一般来说 ...

[md]现在是想通过cubeIDE来是搭建工程,但是cubeIDE生成的目标代码云心效率太低了。想找找看能不能有提升效率的方式。

xmshao 回答时间:2022-4-7 15:00:15
不同的编译环境会导致代码的执行效率的差异,这个也跟我们的环境配置有关,
代码容量、执行效率会基于不同的应用而有不同的取舍或偏好。这个话题有点大,总之,存在执行效率的差异是正常的。
奇迹 回答时间:2022-4-7 19:28:01
长安_yq 发表于 2022-4-7 08:36
[md]编译器是不一样,在cubeIDE里面调整了编译器。相同的优化等级之下,cubeIDE产生的目标程序运行效率还 ...

之前看过一个编译器coremark的比较,在极限性能优化
AC6 -Omax+lto
GCC -Ofast+lto
AC6的跑分差不多是GCC的1.6倍 甚至ROM占用还要更小点
建议开发arm的要不然使用AC6要不然使用IAR,其他环境还是洗洗睡了
长安_yq 回答时间:2022-4-12 09:45:21

xmshao 发表于 2022-4-7 15:00
不同的编译环境会导致代码的执行效率的差异,这个也跟我们的环境配置有关,
代码容量、执行效率会基于不同 ...

感觉差异有点大,差个一两倍还是能接受的,但是差个五倍,导致一个功能无法正常工作,这个有点难以接受了。

长安_yq 回答时间:2022-4-12 09:46:52

奇迹 发表于 2022-4-7 19:28
之前看过一个编译器coremark的比较,在极限性能优化
AC6 -Omax+lto
GCC -Ofast+lto

现在用的AC5,AC6同事们不让用,说是有bug。。。 能接受编译之后代码由差异,但是同样的工程在MDK和cubeIDE上,五倍的运行效率,这个有点离谱了。

奇迹 回答时间:2022-4-12 15:11:20
长安_yq 发表于 2022-4-12 09:46
[md]现在用的AC5,AC6同事们不让用,说是有bug。。。   能接受编译之后代码由差异,但是同样的工程在MDK ...

5倍有点离谱了,你用的啥优化等级
AC6现在已经进入稳定版了,最近几次Keil的更新AC6编译器版本已经稳定了
长安_yq 回答时间:2022-4-20 13:39:33

奇迹 发表于 2022-4-12 15:11
5倍有点离谱了,你用的啥优化等级
AC6现在已经进入稳定版了,最近几次Keil的更新AC6编译器版本已经稳定了 ...

STM32CubeIDE上使用GCC,与MDK用AC5对比,确实是5倍。现在已经弃坑STM32CubeIDE了,但我觉得,应该还是要切回到STM32CubeIDE的,毕竟MDK收费。看看有没有办法优化一下吧。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版