Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Using map to create a hash/bag from an array

by GrandFather (Cardinal)
on Dec 17, 2005 at 11:21 UTC ( #517467=note: print w/ replies, xml ) Need Help??


in reply to Using map to create a hash/bag from an array

Benchmarks are interesting:

use strict; use warnings; use Set::Scalar; use Benchmark qw(cmpthese); my @array = qw(a b c d e f g h i j k l m n o p q r s t u v w x y z); cmpthese (-1, { 'GF' => sub {my %hash; @hash{@array} = (1) x @array;}, 'map' => sub {my %hash = map {($_, 1)} @array;}, 'map++' => sub {my %hash; map {$hash{$_}++} @array;}, 'set' => sub {my $set = Set::Scalar->new(@array);}, } );

Prints:

Rate set map map++ GF set 2203/s -- -84% -91% -92% map 13740/s 524% -- -46% -49% map++ 25598/s 1062% 86% -- -6% GF 27113/s 1131% 97% 6% --

DWIM is Perl's answer to Gödel


Comment on Re: Using map to create a hash/bag from an array
Select or Download Code
Re^2: Using map to create a hash/bag from an array
by shotgunefx (Parson) on Dec 18, 2005 at 08:34 UTC
    Didn't they optimize map at some point so it doesn't actually creat a new array when in a null context? That would explain why map++ is so much faster than map.


    -Lee

    perl digital dash (in progress)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2014-09-21 14:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (172 votes), past polls