IT技术博客大学习 共学习 共进步

快些,在快些,perl的小优化

扶凯 2009-12-21 12:24:39 浏览 3,481 次

一个小程序的简单优化,经过大师指点后速度的分别

[root@localhost ~]# time cat 5000 |perl check.pl  >/tmp/b
 
real    5m59.953s
user    5m59.956s
sys     0m0.105s
[root@localhost ~]# time cat 5000 |perl check1.pl  >/tmp/a
 
real    0m0.134s
user    0m0.111s
sys     0m0.030s

下面是程序优化后的check.pl

#!/usr/bin/perl
use strict;
use warnings;
 
open A,"<a>){
        my ($md5,$ip) = split;
        $hash{$md5} = $ip;
}
while (<>){
    my $line = $_;
    if( /http:\/\/[\w.]+\/\d+\/(\w+)\// ){
        if( exists $hash{$1}){
            print $line."\n";
        }
    }
}
</a>

优化 前的

<a>#!/usr/bin/perl
use strict;
use warnings;
 
open A,"</a><a>){
        my ($md5,$ip) = split;
            $hash{$md5} = $ip;
        }
while (<>){
   my $line = $_;
      foreach my $md5 ( keys %hash){
              if($line =~ /$md5/){
                    print $line."\n";
                }
      }
}
</a>

在logan中有1W的记录.cat时有5k的行.发现正则的性能实在太好,然后使用keys来取hash查所有的表,反到性能不好,但是查是否存在,hash优化的相当于的不错.

建议继续学习

  1. WEB系统需要关注的一些点 (阅读 17,405)
  2. 30分钟3300%性能提升――python+memcached网页优化小记 (阅读 13,582)
  3. perl更新/修改/删除文本文件内容 (阅读 10,521)
  4. 基于SSD的数据库性能优化 (阅读 8,664)
  5. jQuery性能优化指南 (阅读 8,645)
  6. perl大牛flw传说 (阅读 7,563)
  7. perl模块Getopt::Std用法及实例-从命令行读取参数模块 (阅读 6,923)
  8. 一次简单C程序的性能优化 (阅读 6,684)
  9. [Perl] Template::Toolkit 模板技术. (阅读 6,221)
  10. mysql sql 百万级数据库优化方案 (阅读 6,002)