讨论:如何提高perl处理大文件的效率



QUOTE:
原帖由 MMMIX 于 2008-10-11 23:39 发表
其实提高效率的原则无非是两点:
1、选择正确的算法
2、选择合适的实现

所谓合适的实现,从效率的角度来说就是所做的无用功做小的实现,这需要你对所用语言/工具的实现有比较深入的了解。

说得比较概括,但是也比较实际!~


QUOTE:
原帖由 寂寞烈火 于 2005-5-12 11:24 发表
5)while循环要比for/foreach循环效率高,
6)多用小括号,少用$&,$`,$'
7)多余多行匹配推荐用s/m修饰符,不推荐使用$*

补充:
处理大文件 while比for快是因为 for 是一个list的context,  所以用for (<FH>){...}的形势读文件时.  会把整个文件读到内存中去.

perlmonk 中有篇用滑动窗口 处理大文件的文章
link: http://www.perlmonks.org/?node_id=128925

个人感觉perl的io速度已经很快了。  如果需要处理的数据每行都是独立的(不需要其他行的数据, 可以读一行处理一行) 即使每天几G问题也不大。
如果行和行之间是相关的, 那就需要选择合适的算法的了。 就像MMMIX 说的那样。
看来是好帖子,05发表的都挤上来了,学习了
不错,顶一下
恩 好好学习一下,这个课题值得研究
新手报道,学习了
理解深刻呀


QUOTE:
原帖由 flw 于 2008-10-29 09:29 发表
至于那个 & 和 \&,我没看懂是啥意思。

应该是楼主搞错了,应该是尽量不要用 $&
用IO::FileHandle会快一些的