Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

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

by GrandFather (Sage)
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);}, } );


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

Replies are listed 'Best First'.
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.


    perl digital dash (in progress)

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2016-10-26 16:03 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (344 votes). Check out past polls.