Ancient

 view release on metacpan or  search on metacpan

bench/defaults.pl  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark qw(cmpthese);
use lib 'blib/lib', 'blib/arch';
use util qw(defaults);

print "=" x 60, "\n";
print "defaults - Hash Defaults Benchmark\n";
print "=" x 60, "\n\n";

my $opts = { a => 1, b => undef };
my $defs = { a => 10, b => 20, c => 30 };

# Pure Perl defaults
sub pure_defaults {
    my ($hash, $defaults) = @_;
    my %result = %$hash;
    for my $k (keys %$defaults) {
        $result{$k} = $defaults->{$k} unless defined $result{$k};
    }
    return \%result;
}

print "=== Apply 3 defaults (2 used) ===\n";
cmpthese(-2, {
    'util::defaults' => sub { defaults($opts, $defs) },
    'pure_defaults'  => sub { pure_defaults($opts, $defs) },
});

my $empty = {};
print "\n=== All defaults applied ===\n";
cmpthese(-2, {
    'util::defaults' => sub { defaults($empty, $defs) },
    'pure_defaults'  => sub { pure_defaults($empty, $defs) },
});

print "\nDONE\n";



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