免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2241 | 回复: 4
打印 上一主题 下一主题

[Linux] 求助,如何缩短arm平台频繁读写文件时间!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-02 18:34 |只看该作者 |倒序浏览
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[i]);
                fp_write_arr[i] = 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[i]=abs(buffer[i] - 3276;  //求绝对值
                                fwrite(&buffer[i], 2, 1, fp_write_arr[i%32]);  //循环写入每个子文件
                        }
                }
        }

要求是第一个数据放入第一个文件,第二个数据放入第二个文件 。。。。 第33个数据再放入第一个文件,目前测试主要卡在
fwrite(&buffer[i], 2, 1, fp_write_arr[i%32]); 频繁的写文件上,70M数据用时3分钟左右!!~

考虑扩大buffer 一次性写入多点,但效果不明显!!!求助!

论坛徽章:
2
寅虎
日期:2014-11-25 21:47:342015小元宵徽章
日期:2015-03-06 15:58:18
2 [报告]
发表于 2015-04-02 20:20 |只看该作者
你的flash读写性能有多少,如果ram够大,把数据都cache在ram中,开销就是读写flash的了吧。

论坛徽章:
0
3 [报告]
发表于 2015-04-03 09:22 |只看该作者
因为数据大小也不能确定,也试过在程序中缓存多一点,比如10000个字节写一次,相当于32*10000,但是效果没有改善。
再大一个数量级测试就出错了!

用没有好的算法能提高这么大的循环写文件啊? 以70M的文件为例,这个要写 70*1024*512次!

论坛徽章:
0
4 [报告]
发表于 2015-04-03 10:17 |只看该作者
以70M数据为例,这段代码测试时间为203s,注释掉写文件只要6s。求指点!!
//fwrite(&buffer[i], 2, 1, fp_write_arr[i%32]);

论坛徽章:
2
寅虎
日期:2014-11-25 21:47:342015小元宵徽章
日期:2015-03-06 15:58:18
5 [报告]
发表于 2015-04-07 21:34 |只看该作者
注释掉写操作,性能好也可以理解,毕竟flash的写惩罚,性能比较惨淡。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP