Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^3: Picking up Values By Group

by BrowserUk (Pope)
on Feb 04, 2009 at 11:47 UTC ( #741349=note: print w/replies, xml ) Need Help??


in reply to Re^2: Picking up Values By Group
in thread Picking up Values By Group

instead of calling index repeatedly.

The tradeoff is:

  • scanning a 4 character string for a single character.
  • hashing a single character to a 32-bit hash and then performing a modulo 4 operation upon it.

Which actually favours the former:

#! perl -slw use strict; use Benchmark qw[ cmpthese ]; our %lookup = ( A=>0, B=>1, C=>2, D=>3 ); our $input = 'ACGT' x 1000; cmpthese -1, { index => q[ our( %lookup, $input ); my $n; $n = index "ACGT", $_ for split '', $input; ], hash => q[ our( %lookup, $input ); my $n; $n = $lookup{ $_ } for split '', $input; ], }; __END__ c:\test>junk5 Rate hash index hash 107/s -- -21% index 135/s 27% --

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2020-04-07 16:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    The most amusing oxymoron is:
















    Results (43 votes). Check out past polls.

    Notices?