Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: How can I improve the efficiency of this very intensive code?

by polettix (Vicar)
on Aug 06, 2005 at 21:50 UTC ( #481557=note: print w/replies, xml ) Need Help??


in reply to How can I improve the efficiency of this very intensive code?

This sort is the only way I know to find the lowest value in my hash
Heh - finding the lowest value in a set (according to a given cost function) requires traversing the array only once - a sort not! I have not enough will to read what your code is doing exactly, but this should solve the specific ordering problem using List::Util:
use List::Util; #... later in the code sub IsStrongMatch { # Return true if id2 is only top ranked match for id1 my $id1 = shift; my $id2 = shift; my $rC = shift; for my $i1 ( keys %{$rC} ) { next if $i1 == $id1; my $href = $rc->{$i1}; my $minid = reduce { $href->{$a} < $href->{$b} ? $a : $b } keys %$href; return 0 if defined $minid && $id2 == $minid; } return 1; }
Untested!!!

Update: I realised that this answer is a little cryptic. reduce in List::Util allows you to visit each element in an array and do "something" based on the values you encounter along the path. What this code does (more or less) is probably best explained by mrborisguy in this post.

Flavio
perl -ple'$_=reverse' <<<ti.xittelop@oivalf

Don't fool yourself.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://481557]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2020-05-28 22:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If programming languages were movie genres, Perl would be:















    Results (166 votes). Check out past polls.

    Notices?