Ancient

 view release on metacpan or  search on metacpan

bench/first_cmp_hash.pl  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark qw(cmpthese);
use lib 'blib/lib', 'blib/arch';
use List::Util ();
use util qw(first_gt first_ge first_lt);

print "=" x 60, "\n";
print "first_* (hash) - Array of Hashes Comparison Benchmark\n";
print "=" x 60, "\n\n";

my @users = map { { id => $_, age => 15 + int(rand(50)) } } 1..1000;
# Ensure some are adults and some are minors
$users[0]{age} = 17;
$users[500]{age} = 25;

print "=== first_ge (find adult, age >= 18) ===\n";
cmpthese(-2, {
    'util::first_ge'    => sub { first_ge(\@users, 'age', 18) },
    'List::Util::first' => sub { List::Util::first { $_->{age} >= 18 } @users },
});

print "\n=== first_lt (find minor, age < 18) ===\n";
cmpthese(-2, {
    'util::first_lt'    => sub { first_lt(\@users, 'age', 18) },
    'List::Util::first' => sub { List::Util::first { $_->{age} < 18 } @users },
});

print "\n=== first_gt (age > 50) ===\n";
cmpthese(-2, {
    'util::first_gt'    => sub { first_gt(\@users, 'age', 50) },
    'List::Util::first' => sub { List::Util::first { $_->{age} > 50 } @users },
});

print "\nDONE\n";



( run in 0.677 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )