如何提高perl处理大文件的效率
来源:互联网 发布:雅坊美工字体打包下载 编辑:程序博客网 时间:2024/05/04 19:16
Perl最常用的功能之一是处理文本,它内嵌的强大正则表达式是其他语言难以匹敌的,然而,如果使用不当,在处理大文件时(例如我这里的应用程序产生的日志,每天加起来有好几个G),效率会非常底下。下面我总结几个处理这些大文件提高效率的规律,欢迎大家补充:
1)处理文本文件,一般是逐行读入,在这样的循环里,绝不要使用外部shell命令,例如,假如要将分析内容写往其他文件,那么该老老实实的使用perl 自己的写文件句柄的方式,而不要使用shell的"echo $_ >;file"之类的命令,后者比前者慢10000倍。
2)在匹配正则表达式时,如果匹配里含有"&"字符,那么记得在前面加个"\"转义,否则perl会把匹配的内容复制一份以供以后参考,这导致程序其慢无比;
3)在匹配正则表达式时,尽量不要使用i选项(区分大小写),请将不区分大小写的区域尽量缩小,例如/ID=something\&/i,如果只 对ID不分大小写的话,那么应该这么写:/[Ii][Dd]=something\&/,后者比前者快不止100倍;
4)在匹配正则表达式时,如果匹配项是固定不变的,那么请使用o选项,这表示只对正则表达式编译一次,例如/jsp/io比/jsp/i好很多。
5)while循环要比for/foreach循环效率高,
6)多用小括号,少用$&,$`,$'
7)多余多行匹配推荐用s/m修饰符,不推荐使用$*
1)处理文本文件,一般是逐行读入,在这样的循环里,绝不要使用外部shell命令,例如,假如要将分析内容写往其他文件,那么该老老实实的使用perl 自己的写文件句柄的方式,而不要使用shell的"echo $_ >;file"之类的命令,后者比前者慢10000倍。
2)在匹配正则表达式时,如果匹配里含有"&"字符,那么记得在前面加个"\"转义,否则perl会把匹配的内容复制一份以供以后参考,这导致程序其慢无比;
3)在匹配正则表达式时,尽量不要使用i选项(区分大小写),请将不区分大小写的区域尽量缩小,例如/ID=something\&/i,如果只 对ID不分大小写的话,那么应该这么写:/[Ii][Dd]=something\&/,后者比前者快不止100倍;
4)在匹配正则表达式时,如果匹配项是固定不变的,那么请使用o选项,这表示只对正则表达式编译一次,例如/jsp/io比/jsp/i好很多。
5)while循环要比for/foreach循环效率高,
6)多用小括号,少用$&,$`,$'
7)多余多行匹配推荐用s/m修饰符,不推荐使用$*
0 0
- 如何提高perl处理大文件的效率
- perl处理大容量文件
- perl并行处理大文件
- 如何提高ORACLE大数据表Update效率
- 如何 提高企业网站大数据量 效率
- 如何提高SQLITE大数据量操作效率
- 如何提高程序的效率
- 如何提高网页的效率
- 如何提高C++的效率
- 如何提高C++的效率
- 如何提高编码的效率
- perl如何处理INI文件
- Seq 处理文件的效率差别怎么会这么大?
- 大数据量时提高分页的效率
- mysql处理上百万条的数据库如何优化语句来提高处理查询效率
- 提高BSEG处理效率
- 提高BSEG处理效率
- 提高BSEG处理效率
- <list.h>
- 14天学会安卓开发(第十三天)Android多媒体开发
- UI笔记_自定义视图
- dataguard重做基线
- SSL握手过程
- 如何提高perl处理大文件的效率
- SVN打tag
- 那些你不知道的项目管理细节(四)—需求阶段的意识
- 14天学会安卓开发(第十四天)Android项目案例: mp3播放器
- 从零搭建LNMP环境
- 达内C++21天培训视频教程
- halcon函数注释
- 基于引擎的matlab+vc混合编程的配置
- leetcode || Pascal's Triangle