Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Compare arrays remove identical

by perlmonkey (Hermit)
on May 02, 2001 at 11:26 UTC ( #77256=note: print w/ replies, xml ) Need Help??


in reply to Compare arrays remove identical

Theres a section in Mastering Algorithms with Perl on sets also. If you need a full implementation of unions/differences/intersections etc see the Set::Scalar module. If you use chromatic's code linked to above, I gave into my compulsion to do a tiny bit of benchmarking:

my @kansas = qw( corn wheat hay cattle ); my @oklahoma = qw( wheat dairy cattle ); use Benchmark; timethese(100000, { "diff1" => sub { diff1(\@kansas, \@oklahoma) }, "diff2" => sub { diff2(\@kansas, \@oklahoma) }, }); sub diff1 { my %hash; @hash{@{$_[1]}} = (1) x @{$_[1]}; return grep { !defined $hash{$_} } @{$_[0]}; } sub diff2 { my %hash = map{ $_=>1} @{$_[1]}; return grep { !defined $hash{$_} } @{$_[0]}; }
It seems that a hash slice is a teeny bit faster than map for this purpose:
Results:
Benchmark: timing 100000 iterations of diff1, diff2... diff1: 2 wallclock secs ( 1.74 usr + 0.01 sys = 1.75 CPU) diff2: 3 wallclock secs ( 2.22 usr + 0.01 sys = 2.23 CPU)


Comment on Re: Compare arrays remove identical
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (12)
As of 2015-07-08 07:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (96 votes), past polls