http://www.perlmonks.org?node_id=868687

Dru has asked for the wisdom of the Perl Monks concerning the following question:

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