Explorar o código

More optimizations (shaved off 50 seconds on 23 minute parse)

sbingner %!s(int64=24) %!d(string=hai) anos
pai
achega
105e8f1dd6

+ 7 - 3
modules/Pisg/Common.pm

@@ -57,8 +57,12 @@ sub add_ignore
 sub is_ignored
 {
     my $nick = shift;
-    if ($ignored{$nick} or $ignored{find_alias($nick)}) {
+    if ($ignored{$nick}) {
         return 1;
+    } elsif ($ignored{find_alias($nick)}) {
+        $ignored{$nick} = 1;
+    } else {
+        $ignored{$nick} = 0;
     }
 }
 
@@ -140,10 +144,10 @@ sub match_urls
     my $str = shift;
 
     # Interpret 'www.' as 'http://www.'
-    $str =~ s/(http:\/\/)?www\./http:\/\/www\./ig;
+    $str =~ s/(http:\/\/)?www\./http:\/\/www\./igo;
 
     my @urls;
-    while ($str =~ s/(http|https|ftp|telnet|news)(:\/\/[-a-zA-Z0-9_\/~]+\.[-a-zA-Z0-9.,_~=:&@%?#\/+]+)//i) { 
+    while ($str =~ s/(http|https|ftp|telnet|news)(:\/\/[-a-zA-Z0-9_\/~]+\.[-a-zA-Z0-9.,_~=:&@%?#\/+]+)//io) { 
         my $url = "$1$2";
         if ($url_seen{$url}) {
             push(@urls, $url);

+ 4 - 4
modules/Pisg/HTMLGenerator.pm

@@ -1770,10 +1770,10 @@ sub _mostnicks
     # List showing the user with most used nicks
     my $self = shift;
 
-    my @sortnicks = sort { @{ $self->{stats}->{nicks}->{$b} } <=> @{ $self->{stats}->{nicks}->{$a} } } 
+    my @sortnicks = sort { keys %{ $self->{stats}->{nicks}->{$b} } <=> keys %{ $self->{stats}->{nicks}->{$a} } } 
                                 keys %{ $self->{stats}->{nicks} };
 
-    if (@{ $self->{stats}->{nicks}->{$sortnicks[0]} } > 1) {
+    if (keys %{ $self->{stats}->{nicks}->{$sortnicks[0]} } > 1) {
 
         $self->_headline($self->_template_text('mostnickstopic'));
 
@@ -1788,8 +1788,8 @@ sub _mostnicks
         for(my $i = 0; $i < $self->{cfg}->{mostnickshistory}; $i++) {
             next if is_ignored($sortnicks[$i]);
             last unless $i < @sortnicks;
-            my $nickcount = scalar(@{ $self->{stats}->{nicks}->{$sortnicks[$i]} });
-            my $nickused = join(", ", @{ $self->{stats}->{nicks}->{$sortnicks[$i]} });
+            my $nickcount = keys %{ $self->{stats}->{nicks}->{$sortnicks[$i]} };
+            my $nickused = join(", ", values %{ $self->{stats}->{nicks}->{$sortnicks[$i]} });
 
             next unless ($nickcount > 1);
 

+ 2 - 4
modules/Pisg/Parser/Format/mIRC.pm

@@ -93,11 +93,9 @@ sub thirdline
 
 sub remove_prefix
 {
-    my $str = shift;
+    my ($str) = @_;
 
-    $str =~ s/^@//;
-    $str =~ s/^\+//;
-    $str =~ s/^%//;
+    $str =~ s/^[@%\+]//o;
 
     return $str;
 }

+ 1 - 7
modules/Pisg/Parser/Logfile.pm

@@ -528,13 +528,7 @@ sub checkname {
     # when nicktracking is enabled)
     my ($nick, $newnick, $stats) = @_;
 
-    foreach (@{ $stats->{nicks}{$newnick}}) {
-        if (lc($_) eq lc($nick)) {
-            return;
-        } 
-    }
-
-    push (@{ $stats->{nicks}{$newnick} }, $nick);
+    $stats->{nicks}{$newnick}{lc($nick)} = $nick;
 }
 
 sub _adjusttimeoffset