<?xml version="1.0" encoding="windows-1252"?>
<node id="517467" title="Re: Using map to create a hash/bag from an array" created="2005-12-17 06:21:54" updated="2005-12-17 01:21:54">
<type id="11">
note</type>
<author id="461912">
GrandFather</author>
<data>
<field name="doctext">
&lt;p&gt;Benchmarks are interesting:
&lt;/p&gt;
&lt;c&gt;
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' =&gt; sub {my %hash; @hash{@array} = (1) x @array;},
    'map' =&gt; sub {my %hash = map {($_, 1)} @array;},
    'map++' =&gt; sub {my %hash; map {$hash{$_}++} @array;},
    'set' =&gt; sub {my $set = Set::Scalar-&gt;new(@array);},
    }
 );
&lt;/c&gt;
&lt;p&gt;Prints:&lt;/p&gt;
&lt;c&gt;
         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%    --
&lt;/c&gt;
&lt;div class="pmsig"&gt;&lt;div class="pmsig-461912"&gt;
&lt;hr&gt;DWIM is Perl's answer to G&amp;ouml;del
&lt;/div&gt;&lt;/div&gt;</field>
<field name="root_node">
517458</field>
<field name="parent_node">
517458</field>
</data>
</node>
