for my $r (@rand) { return 0 if $a[$r] ne $b[$r]; } return 1; #### #!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all) ; use List::Util qw(shuffle); use Digest::MD5 qw(md5); open my $JOHN, '<', 'dictionary' or die $!; my @array = <$JOHN>; my @sorted = sort @array; $a = \@array; $b = \@sorted; timethese(5000, { 'join' => sub { return join('|',@$a) eq join('|', @$b); }, 'md5' => sub { return Digest::MD5::md5(@$a) eq Digest::MD5::md5(@$b); }, }); #### perl cmparray.pl Benchmark: timing 5000 iterations of join, md5... join: 29 wallclock secs (27.91 usr + 0.18 sys = 28.09 CPU) @ 178.00/s (n=5000) md5: 27 wallclock secs (25.20 usr + 0.19 sys = 25.39 CPU) @ 196.93/s (n=5000)