#!/usr/bin/perl
use warnings;
use strict;
use Benchmark 'cmpthese';


my @k = qw( 1 2 3 4 5 6 );


cmpthese( -10, { exists => sub { my $count = 0; my %hash; @hash{ @k } = (); for my $num ( 1, 3, 5, 7, 9, 11 ) { $count++ if exists $hash{ $num }; } return $count; }, hash => sub { my $count = 0; my %hash = map { $_ => 1 } @k; for my $num ( 1, 3, 5, 7, 9, 11 ) { $count++ if $hash{ $num }; } return $count; }, grep_r => sub { my $count = 0; my @array = @k; for my $num ( 1, 3, 5, 7, 9, 11 ) { $count++ if grep /^$num$/, @array; } return $count; }, grep_e => sub { my $count = 0; my @array = @k; for my $num ( 1, 3, 5, 7, 9, 11 ) { $count++ if grep $_ == $num, @array; } return $count; }, } );


Produces the result (on my computer):

          Rate grep_r grep_e   hash exists
grep_r  4838/s     --   -81%   -83%   -90%
grep_e 25923/s   436%     --   -10%   -49%
hash   28848/s   496%    11%     --   -43%
exists 50524/s   944%    95%    75%     --


So in my test exists() is definitely faster.

Awesome, definately soemthing for me to look into, thanks a bunch John!

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to