Fellow Monks,
I have a large array of ip addresses (3500) that I am using to parse a large log file (500MB). I wanted to take this opportunity to try something new and to optimize my code so I thought threads would give me some hardy performance boost. Much to my disappointment, or more likely to my lack of knowledge with using threads, the code that I ran threads with actually took longer. I did a small test with half the ip's and a 1/10 the file size and according to
Benchmark it took 10 seconds longer to run with threads vs without. Am I doing something wrong? Should I put threads on the shelf and explore option options?
Below is the part of the code that I am using threads on. Also I can't get @ReturnData to return anything:
my $thr = threads->new(\&check_fw_logs);
my @ReturnData = $thr->join;
print "Thread returned @ReturnData";
sub check_fw_logs {
my @ips;
open (FILE, $fw_file) or croak("Can't open $fw_file: $!\n");
while(<FILE>){
for my $i (@allips){
push(@ips, $_) if /$i/;
}
}
return @ips;
}
Thanks,
Dru
Perl, the Leatherman of Programming languages. -
qazwart