与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)
离线
uint32要好。
用memset之类的系统函数应该比你循环写要快
也可以自己优化,我见人用neon指令配合预加载指令来实现memcpy、set,这样ddr的burst效率会很高
离线
开cathe吧,连续访问效率高太多
离线
可以参考知乎上的这个问题:memcpy比循环赋值快吗?为什么?,实际上现在编译器已经可以自动加上多种优化,当然优化的效果还得看平台和编译器的支持程度。
离线
学习了
离线