Skip to content

Instantly share code, notes, and snippets.

Created September 30, 2010 02:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/603932 to your computer and use it in GitHub Desktop.
Save anonymous/603932 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark;
use List::Util qw/shuffle/;
my @a = shuffle 0 .. 9;
my %subs = (
global_block => sub {
my @sorted = sort { $a <=> $b } @a;
return \@sorted;
},
global_sub => sub {
my $cmp = sub { $a <=> $b };
my @sorted = sort $cmp @a;
return \@sorted;
},
proto => sub {
my $cmp = sub ($$) { $_[0] <=> $_[1] };
my @sorted = sort $cmp @a;
return \@sorted;
},
);
for my $sub (keys %subs) {
print "$sub: @{$subs{$sub}()}\n";
}
for my $n (10, 100, 1_000, 10_000) {
@a = shuffle 1 .. $n;
Benchmark::cmpthese -1, \%subs;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment