- 论坛徽章:
- 0
|
大家好,我写了个脚本但是脚本运行的特别慢,但是文件小的话(假设2000行左右)就可以马上运行出来,但是文件大就特别慢好几天了才出来一点点结果(400K左右)感觉不太正常,麻烦大家帮忙看看如何修改才能让它运行速度加快,自己也不怎么懂算法,再此谢过了:具体情况见下述 我需要对一个4G左右大小的文件进行处理,该文件内容是这样的----
ID1 xxx xxx xxx 50
ID1 xxx xxx xxx 60 ID1 xxx xxx xxx 60 即第5列是个分值,分值高则留下,分值一样则都保留,ID重复的次数是>=2, 绝大部分是>=2的
ID2 xxx xxx xxx 50 ID2 xxx xxx xxx 60
ID2 xxx xxx xxx 60 最终需要得到右边结果 ID4 xxx xxx xxx 60
ID3 xxx xxx xxx 50 ID4 xxx xxx xxx 60
ID3 xxx xxx xxx 60 ID3 xxx xxx xxx 60
ID3 xxx xxx xxx 60 ID3 xxx xxx xxx 60
ID4 xxx xxx xxx 60
ID4 xxx xxx xxx 60 (xxx所表示的是不一样的,所以只是ID 相同行不同)
while(<IN>){
chomp;
my($z,$c)=(split /\t/)[0,4];
$hash{$z}++;
if($hash{$z}==1){
$hash2{$z}=$_;
$hash4{$z}=$c;
}
if($hash{$z}>1){
$hash3{$z}=$_;
$hash5{$z}=$c;
}
}
foreach my $key2(sort keys %hash2){
foreach my $key3(sort keys %hash3){
if($key2 eq $key3){
if($hash4{$key2}>$hash5{$key3}){
print OUT "$hash2{$key2}\n";
}
if($hash4{$key2}<$hash5{$key3}){
print OUT "$hash3{$key3}\n"
}
if($hash4{$key2}==$hash5{$key3}){
print OUT "$hash2{$key2}\n$hash3{$key3}\n";
}
}
}}
|
|