[STM32F4] 为啥这么慢呢?

[复制链接]
 楼主| bbapple 发表于 2018-9-24 14:10 | 显示全部楼层 |阅读模式
sprintf(rgbhChar,"%4.4f",1234.5678);

测试了一下,这句耗时18740个机器周期。
印象里,以前测试过Keil的C51,好像比较复杂的转换也就2K~4K个机器周期(很久了,**准确吗?)

现CPU是stm32F449,编译器是IAR,工程选项卡里已经选了硬件乘法器。
为啥这么慢呢?
zhouhuanの 发表于 2018-9-24 14:14 | 显示全部楼层
楼主C51上的测试代码是一致的嘛?会不会是测试条件不同造成的?
wanglaojii 发表于 2018-9-24 14:16 | 显示全部楼层
在相同条件下的对比才有用;建议先搞清楚c51的到底是多少
laozhongyi 发表于 2018-9-24 14:19 | 显示全部楼层
1.为何同样的C语句,编译后指令(周期)差这么多?是否精简指令集都如此?
2.对于库函数,应该都是以obj提供的,也就是都是预先编译好的。
Edisons 发表于 2018-9-24 14:22 | 显示全部楼层
精简指令集的特点即是这样,同样的操作,编译出来的指令数会多很多(取决于做的事情,有些需要的指令多,有的需要的少)。
_gege 发表于 2018-9-24 14:25 | 显示全部楼层
不同的IDE的printf库的实现都不一样,针对应用,优化的程度不同所以效率也不一样,不能作为一个比较的标准。
Mozarts 发表于 2018-9-24 14:29 | 显示全部楼层
实际上C51的频率好像就在8~24MHz之间
Listate 发表于 2018-9-24 14:31 | 显示全部楼层
预先编译好的obj,工程中的选项对其无影响
sourceInsight 发表于 2018-9-24 14:32 | 显示全部楼层
主要还有由于楼主用的开发环境不同,是不是用的库中的sprintf()功能不同?
boy1990 发表于 2018-9-24 14:36 | 显示全部楼层
4个核当然要写4个main函数.
其实这里还涉及一个任务分配的问题. 撇开这个问题的话.
CallReceiver 发表于 2018-9-24 14:38 | 显示全部楼层
要发挥4核的性能.
可以让每个核做 100 次的加计算, 最后把结果加起来.
hfdy01 发表于 2018-9-24 14:39 | 显示全部楼层
静态库文件是否使用到硬件的乘法器,决定于编译时候编译器的配置
xia00 发表于 2018-9-24 14:41 | 显示全部楼层
先转换,然后再发送,肯定运算增多了。
feiqi1 发表于 2018-9-24 14:43 | 显示全部楼层
sprintf()这个原函数的看下的
androidbus 发表于 2018-9-24 14:45 | 显示全部楼层
函数sprintf()用来作格式化的输出 效率最低。
litengg 发表于 2018-9-24 14:46 | 显示全部楼层
:strcpy效率比sprintf高很多
qiangweii 发表于 2018-9-24 14:47 | 显示全部楼层
编写的函数的执行效率问题
shashaa 发表于 2018-9-24 14:48 | 显示全部楼层
输入输出语句执行总是很慢的
Thorald 发表于 2018-9-27 21:15 | 显示全部楼层
4个核涉及一个任务分配的问题
Soraka 发表于 2018-9-28 21:22 | 显示全部楼层
精简指令集都如此吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

293

主题

1811

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部