Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: improve performance

by GotToBTru (Prior)
on Jun 08, 2015 at 16:34 UTC ( [id://1129456]=note: print w/replies, xml ) Need Help??


in reply to improve performance

Consider if you can use the none function from List::Util for operations like (! grep ). grep will check the entire list to find all the values that match, but in this case, once you have found a match you might as well stop. Some of the List::Util functions, like first or any or none, will short circuit.

In this example, the variable $j shows how many times the loop body is executed.

use strict; use warnings; use List::Util qw(none); my @list = 1..100; my $j = 0; if (! grep { $j++; $_ > 10 } @list ) { print 'Didn\'t find any values above 10 ... ' } else { print 'Found some values above 10 ... ' } print "but I had to look at $j values to be sure.\n"; $j = 0; if (none { $j++; $_ > 10 } @list) { print 'Didn\'t find any values above 10 ... ' } else { print 'Found some values above 10 ... ' } print "but I had to look at $j values to be sure.\n";

Output:

Found some values above 10 ... but I had to look at 100 values to be s +ure. Found some values above 10 ... but I had to look at 11 values to be su +re.

Update: forgot to copy the code that actually produces that output!

Dum Spiro Spero

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (3)
As of 2024-03-29 07:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found