note
plaid
While we're on the topic of benchmarking, I'd just like to,
for the hell of it, add the worst possible answer to this
question:
<code>
map { $code .= "\$hash{$_} = 1;\n" } @array; eval "$code";
</code>
And now for a little program, borrowed from httptech:
<code>
use Benchmark;
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 z y z);
my %hash;
timethese(10000, {
'btrott' => sub {
@hash{@array} = (1) x @array;
},
'plaid' => sub {
my $code
map { $code .= "\$hash{$_} = 1;\n" } @array;
eval "$code";
}
});
</code>
Outputs
<code>
Benchmark: timing 10000 iterations of btrott, plaid...
btrott: 1 wallclock secs ( 0.56 usr + 0.00 sys = 0.56 CPU)
plaid: 23 wallclock secs (22.07 usr + 0.06 sys = 22.13 CPU)
</code>
Don't know why i threw this in. Guess I just didn't want
to waste the effort:)
10988
10996