TruP:
Is this loop executed once, or are you doing it repeatedly during your program? If the latter, it might be that you can factor the code to move some of the processing out of a tight inner loop. If you can show a bit more of your program (with a *little* sample data) people might be able to dig in a little better to find some optimization opportunities.
Suppose, for example, that your loop was the scoring section of a genetic algorithm and you were recomputing the score once per each generation. If that were the case, and you were changing the genes of only half your population at a time, you could perhaps retain the scores after you compute them, and then skip the calculation for any item that you've already computed a score for:
my %scored; . . . foreach my $a (@{ $array_ref }) { if (exists $scored{$a}) { # We've already scored this one push @{ $bar->{$scored{$a}}, $a; next; } my $i = 0; foreach my $b (split('-', $a)) { foreach my $c (keys %{ $hash_ref }) { $i += $foo->{$b}->{$c}->{'value'}; } } $scored{$a} = $i; push @{ $bar->{$i} }, $a; }
...roboticus
When your only tool is a hammer, all problems look like your thumb.
In reply to Re: Optimize a perl block
by roboticus
in thread Optimize a perl block
by IruP
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |