求助,如何缩短arm平台频繁读写文件时间!!!
ARM平台: flash:256M内存:128M要求分析70M大小的数据3分钟之内出结果,现经过测试瓶颈主要卡在频繁读写文件上。大神们,看看如何优化?感谢!~~
部分代码:
fp_read = fopen(filepath, "rb");
for(i=0; i<32; i++)
{
strcpy(file_name, folder);
strcat(file_name, filename_arr);
fp_write_arr = fopen(file_name, "wb");
}
if(fp_read) {
while(!feof(fp_read)) {
memset(buffer, 0, 32000*sizeof(short));
count_tmp = fread(buffer, 2, 32000, fp_read);
for(i=0; i<count_tmp; i++)
{
buffer=abs(buffer - 32768);//求绝对值
fwrite(&buffer, 2, 1, fp_write_arr);//循环写入每个子文件
}
}
}
要求是第一个数据放入第一个文件,第二个数据放入第二个文件 。。。。 第33个数据再放入第一个文件,目前测试主要卡在
fwrite(&buffer, 2, 1, fp_write_arr); 频繁的写文件上,70M数据用时3分钟左右!!~
考虑扩大buffer 一次性写入多点,但效果不明显!!!求助! 你的flash读写性能有多少,如果ram够大,把数据都cache在ram中,开销就是读写flash的了吧。 因为数据大小也不能确定,也试过在程序中缓存多一点,比如10000个字节写一次,相当于32*10000,但是效果没有改善。
再大一个数量级测试就出错了!
用没有好的算法能提高这么大的循环写文件啊? 以70M的文件为例,这个要写 70*1024*512次! 以70M数据为例,这段代码测试时间为203s,注释掉写文件只要6s。求指点!!
//fwrite(&buffer, 2, 1, fp_write_arr); 注释掉写操作,性能好也可以理解,毕竟flash的写惩罚,性能比较惨淡。
页:
[1]