您尚未登录。

楼主 #1 2019-12-18 15:41:25

gui401
会员
注册时间: 2019-10-25
已发帖子: 45
积分: 29.5

数组赋值效率问题?

与sram不同,ddr内存连续地址读写时效率很高(几百兆),但如果是非burst读写速度就很慢(几十兆?)。

for(int i=0;i<100;i++) 
    a[i] = 0x00;

这么写arm是否按burst方式去写内存呢?
另外AHB位宽为32,那么是否意味着数组定义成uint32_t 比uint8_t在速度上更有利?

最近编辑记录 gui401 (2019-12-18 15:49:32)

离线

#2 2019-12-18 16:05:11

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,138
积分: 1090.5

Re: 数组赋值效率问题?

uint32要好。
用memset之类的系统函数应该比你循环写要快
也可以自己优化,我见人用neon指令配合预加载指令来实现memcpy、set,这样ddr的burst效率会很高

离线

#3 2019-12-18 22:21:04

bunny
会员
注册时间: 2020-05-23
已发帖子: 154
积分: 154

Re: 数组赋值效率问题?

开cathe吧,连续访问效率高太多

离线

#4 2019-12-18 22:27:03

metro
会员
注册时间: 2019-03-09
已发帖子: 445
积分: 489

Re: 数组赋值效率问题?

可以参考知乎上的这个问题:memcpy比循环赋值快吗?为什么?,实际上现在编译器已经可以自动加上多种优化,当然优化的效果还得看平台和编译器的支持程度。

离线

#5 2019-12-19 14:51:34

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: 数组赋值效率问题?

学习了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn