免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: justu78
打印 上一主题 下一主题

读取文件那种方法效率更好? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-09-12 14:36 |只看该作者
zhlong8 发表于 2013-09-12 10:16
精神可嘉但真没什么意思,文件小差不了多少,文件大不可能全读,至于中间地带欢迎贴出测试及结果

我的工作对这个比较敏感,因为我的程序要做成千上万次的迭代运算,每次运算都要生成,读取某些文件,有大有小(可能上万行),所以不同code读取文件的细微时间差异,到最后会叠加的,最后会导致我的程序完成同样的任务运行时间大不相同,我当然是希望越快越好。
我不觉得好的code会没什么意思,冗长低效的code和简明高效的code完成同样的事情,哪怕非常简单的事情,我肯定选后者,写程序的人不应该这么想。
我用的测试文件是1万多行的,测试很简单,自己都可以试,网上也有人测试过,我就不帖了。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
12 [报告]
发表于 2013-09-12 17:30 |只看该作者
回复 11# justu78


    重复读一个文件(无视缓存)时1,10,100万行都是全读快,快3-5倍。但是1000万行全读直接假死了(4G内存64位win7 64位Perl),按行1.7秒。看不出来哪种更好

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
13 [报告]
发表于 2013-09-12 20:39 |只看该作者
看情况吧 大的超出内存就用<>
小就直接放数组了

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
14 [报告]
发表于 2013-09-13 09:59 |只看该作者
内存够大,当然一次性读取速度快;一次性内存放不下,那就老老实实一行行读吧。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
15 [报告]
发表于 2013-09-13 10:03 |只看该作者
偷偷学习中。。。。

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
16 [报告]
发表于 2013-09-13 10:08 |只看该作者
对于文件略大的,放数组会生成一大堆变量,放哈希里面会不会好点。{:3_188:}

论坛徽章:
0
17 [报告]
发表于 2013-09-13 12:33 |只看该作者
zhlong8 发表于 2013-09-12 17:30
回复 11# justu78

1000万行我这个工作不会有,所以我打算还是全读,而且是整个文件读入一个字符串,不是数组,读入数组也慢。

论坛徽章:
0
18 [报告]
发表于 2013-09-13 12:34 |只看该作者
stanley_tam 发表于 2013-09-13 10:08
对于文件略大的,放数组会生成一大堆变量,放哈希里面会不会好点。

就一个数组,怎么会一大堆变量?对读取整个文件而言,哈希没有什么优势

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
19 [报告]
发表于 2013-09-13 13:39 |只看该作者
问题是perl数组里面的元素就是变量,量大的还是避免数组比较好,很耗内存的说{:3_193:}
回复 18# justu78


   

论坛徽章:
0
20 [报告]
发表于 2013-09-13 13:48 |只看该作者
stanley_tam 发表于 2013-09-13 13:39
问题是perl数组里面的元素就是变量,量大的还是避免数组比较好,很耗内存的说
回复 18# justu78 ...

所以我选择读取整个文件到一个字符串变量
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP