免费注册 查看新帖 |

Chinaunix

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

perl 如何分析1G以上的大文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-16 16:20 |只看该作者 |倒序浏览
处理1G的大文件 断点续读的方式 有什么好解决办法

论坛徽章:
0
2 [报告]
发表于 2007-11-16 16:40 |只看该作者
楼主没说清楚吧?如何分析1G以上的大文件,怎么又出来个断点续读的?(只听说过断点续传是我孤陋寡闻?)

论坛徽章:
0
3 [报告]
发表于 2007-11-16 16:55 |只看该作者
原帖由 yuio654 于 2007-11-16 16:40 发表
楼主没说清楚吧?如何分析1G以上的大文件,怎么又出来个断点续读的?(只听说过断点续传是我孤陋寡闻?)



处理到一半, 想关机了, 明天开机接着处理. 之类的.

如果你要的只是"断点续读", 那就保存当前状态.
如果你是想平衡内存占用和IO, 那就加点判断.

论坛徽章:
0
4 [报告]
发表于 2007-11-16 16:59 |只看该作者
是的,如果读取到某一段,突然发生意外中断,可以保留当前读取位置

论坛徽章:
0
5 [报告]
发表于 2007-11-16 17:01 |只看该作者
如果你要的只是"断点续读", 那就保存当前状态.
如果你是想平衡内存占用和IO, 那就加点判断.

我是新手,平衡内存占用和IO怎么做?

论坛徽章:
0
6 [报告]
发表于 2007-11-16 17:08 |只看该作者
降低IO: 你内存NB的话, 一次性读入整个文件:>
降低内存: while (<FILE>) {...} 或者几次读几千行, 这个看你的喜好了.

论坛徽章:
0
7 [报告]
发表于 2007-11-16 17:14 |只看该作者
顺便问一下,怎么一次性读取100行数据?

论坛徽章:
0
8 [报告]
发表于 2007-11-16 17:15 |只看该作者
哦,多谢指导,我写下试试

论坛徽章:
0
9 [报告]
发表于 2007-11-16 17:45 |只看该作者
原帖由 __lxmxn__ 于 2007-11-16 17:14 发表
顺便问一下,怎么一次性读取100行数据?


恩, 问得好.

简单的做法是while (<>) 计数, 虽然实际还是一行一行读入的, 但是在buffer机制下还不错.
比读一行, 处理一行好多了.

另一种做法是: 估计平均一行的字节数的高值, sysread你需要的行数的总字节, 然后substr/rindex找最后的\n, 去掉.
对这些行处理后, sysseek刚去掉的字节数.

论坛徽章:
0
10 [报告]
发表于 2007-11-19 18:14 |只看该作者
原帖由 Lonki 于 2007-11-16 17:45 发表


恩, 问得好.

简单的做法是while () 计数, 虽然实际还是一行一行读入的, 但是在buffer机制下还不错.
比读一行, 处理一行好多了.

另一种做法是: 估计平均一行的字节数的高值, sysread你需要的行数的总 ...



Hi Lonki, 不知道你说的这个方法怎么样,我常常处理这样的分析需求。每天分析都是要跑很久。等会改成你这种方式看看:) 你可有效果对比啊? 呵呵。我处理的gz文件都有1.8G一个,头大哦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP