晕,同一段脚本,在5.8.8和5.10.1环境下,性能相差100倍
时间:2011-05-28
来源:互联网
功能是对文件A,根据文件B进行过滤,代码如下:
sub filterFile
{
my ($processFile,$filterFile1,$outputFile) = @_;
my %hashFile;
my $fileBuildTime='123456';
open (OUTFILE, ">>${outputFile}"
or die "can't open file: $outputFile";
open FH, "<$filterFile1" or die "can't open file: $filterFile1";
while (<FH>
{
chomp;
$hashFile{$_} = 1;
}
close (FH);
open FH, "<$processFile" or print "can't open file: $processFile";
my $reg=join '|',keys %hashFile;
print "reg is
reg\n";
while (<FH>
{
if (/($reg)/)
{
print OUTFILE "${fileBuildTime}\t$_" ;
$rowCNT++;
}
}
close (FH);
close(OUTFILE);
}
在5.10.1环境下,1分钟,而在5.8.8环境下,竟然需要1个多小时,求解,到底是那个地方导致2个版本的性能差异这么大?
sub filterFile
{
my ($processFile,$filterFile1,$outputFile) = @_;
my %hashFile;
my $fileBuildTime='123456';
open (OUTFILE, ">>${outputFile}"

open FH, "<$filterFile1" or die "can't open file: $filterFile1";
while (<FH>

{
chomp;
$hashFile{$_} = 1;
}
close (FH);
open FH, "<$processFile" or print "can't open file: $processFile";
my $reg=join '|',keys %hashFile;
print "reg is

while (<FH>

if (/($reg)/)
{
print OUTFILE "${fileBuildTime}\t$_" ;
$rowCNT++;
}
}
close (FH);
close(OUTFILE);
}
在5.10.1环境下,1分钟,而在5.8.8环境下,竟然需要1个多小时,求解,到底是那个地方导致2个版本的性能差异这么大?
作者: fikong2005 发布时间: 2011-05-28
如果真是这个函数的原因,而且 B 文件不是非常大的话那估计只能是 if (/($reg)/) 这里了。5.10 的 RE engine 改动很大,你多测试测试
作者: zhlong8 发布时间: 2011-05-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28