use strict;
use warnings;
use v5.42;
use feature 'keyword_any';
no warnings 'experimental::keyword_any';
use List::Util;
use Benchmark 'cmpthese';
my @list = 0 .. 1_000_000;
my %hash = map { $_ => 1 } @list;
cmpthese(-5, {
'grep' => sub { return 1 if 0 != grep exists $hash{$_}, @list },
'List::Util::any' => sub { return 1 if List::Util::any { exists $
+hash{$_} } @list },
'core any' => sub { return 1 if any { exists $hash{$_} } @list },
});
Rate grep List::Util::any core any
grep 14.1/s -- -98% -99%
List::Util::any 634/s 4412% -- -46%
core any 1168/s 8209% 84% --
The way forward always starts with a minimal test.
|