打印
[STM32F4]

好慢呀

[复制链接]
1078|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2020-6-26 13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

sprintf(rgbhChar,"%4.4f",1234.5678);

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

现CPU是stm32F449,编译器是IAR,工程选项卡里已经选了硬件乘法器。
为啥这么慢呢?

使用特权

评论回复
沙发
ADZ2016| | 2020-6-26 13:55 | 只看该作者
用精简的库会比较好一些!这个似乎本身就很占用资源

使用特权

评论回复
板凳
supernan| | 2020-6-26 13:57 | 只看该作者
楼主C51上的测试代码是一致的嘛?

使用特权

评论回复
地板
stly| | 2020-6-26 14:03 | 只看该作者
会不会是测试条件不同造成的?

使用特权

评论回复
5
supernan| | 2020-6-26 14:06 | 只看该作者
在相同条件下的对比才有用;建议先搞清楚c51的到底是多少

使用特权

评论回复
6
pangb| | 2020-6-26 14:09 | 只看该作者
为何同样的C语句,编译后指令(周期)差这么多?

使用特权

评论回复
7
morrisk| | 2020-6-26 14:11 | 只看该作者
是否精简指令集都如此?

使用特权

评论回复
8
kangzj| | 2020-6-26 14:14 | 只看该作者
对于库函数,应该都是以obj提供的,也就是都是预先编译好的。

使用特权

评论回复
9
zhanglli| | 2020-6-26 14:20 | 只看该作者
精简指令集的特点即是这样,同样的操作,编译出来的指令数会多很多

使用特权

评论回复
10
zhuhuis| | 2020-6-26 14:24 | 只看该作者
取决于做的事情,有些需要的指令多,有的需要的少

使用特权

评论回复
11
juventus9554| | 2020-6-26 14:27 | 只看该作者
不同的IDE的printf库的实现都不一样,针对应用,优化的程度不同所以效率也不一样,不能作为一个比较的标准。

使用特权

评论回复
12
llljh| | 2020-6-26 14:30 | 只看该作者
实际上C51的频率好像就在8~24MHz之间

使用特权

评论回复
13
pengf| | 2020-6-26 14:33 | 只看该作者
预先编译好的obj,工程中的选项对其无影响

使用特权

评论回复
14
xxrs| | 2020-6-26 14:36 | 只看该作者
主要还有由于楼主用的开发环境不同,是不是用的库中的sprintf()功能不同?

使用特权

评论回复
15
chenjunt| | 2020-6-26 14:47 | 只看该作者
4个核当然要写4个main函数.
其实这里还涉及一个任务分配的问题. 撇开这个问题的话.

使用特权

评论回复
16
zyf部长| | 2020-6-26 14:50 | 只看该作者
要发挥4核的性能.
可以让每个核做 100 次的加计算, 最后把结果加起来.

使用特权

评论回复
17
kangzj| | 2020-6-26 14:53 | 只看该作者
静态库文件是否使用到硬件的乘法器,决定于编译时候编译器的配置

使用特权

评论回复
18
hanwe| | 2020-6-26 14:59 | 只看该作者
先转换,然后再发送,肯定运算增多了。

使用特权

评论回复
19
zhanglli| | 2020-6-26 15:01 | 只看该作者
sprintf()这个原函数的看下的

使用特权

评论回复
20
huwr| | 2020-6-26 15:07 | 只看该作者
函数sprintf()用来作格式化的输出 效率最低。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

369

主题

4278

帖子

2

粉丝