/
catmandu_util_vs_data_util.pl
executable file
·76 lines (69 loc) · 1.58 KB
/
catmandu_util_vs_data_util.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark qw(:all);
use Catmandu::Util ();
use Data::Util ();
my @names = qw(
is_invocant
is_scalar_ref
is_array_ref
is_hash_ref
is_code_ref
is_regex_ref
is_glob_ref
is_value
is_string
is_number
is_integer
);
my @catmandu_util_subs = (
\&Catmandu::Util::is_invocant,
\&Catmandu::Util::is_scalar_ref,
\&Catmandu::Util::is_array_ref,
\&Catmandu::Util::is_hash_ref,
\&Catmandu::Util::is_code_ref,
\&Catmandu::Util::is_regex_ref,
\&Catmandu::Util::is_glob_ref,
\&Catmandu::Util::is_value,
\&Catmandu::Util::is_string,
\&Catmandu::Util::is_number,
\&Catmandu::Util::is_integer,
);
my @data_util_subs = (
\&Data::Util::is_invocant,
\&Data::Util::is_scalar_ref,
\&Data::Util::is_array_ref,
\&Data::Util::is_hash_ref,
\&Data::Util::is_code_ref,
\&Data::Util::is_regex_ref,
\&Data::Util::is_glob_ref,
\&Data::Util::is_value,
\&Data::Util::is_string,
\&Data::Util::is_number,
\&Data::Util::is_integer,
);
my $str = "a string";
my $regex = qr//;
my @data = (
'Benchmark',
\$str,
[],
{},
sub {},
$regex,
\*STDIN,
"",
$str,
1.1,
1,
);
for (my $i = 0; $i < @names; $i++) {
my $name = $names[$i];
my $catmandu_util_sub = $catmandu_util_subs[$i];
my $data_util_sub = $data_util_subs[$i];
cmpthese(1000000, {
"Catmandu::Util::$name" => sub { $catmandu_util_sub->($_) for @data },
"Data::Util::$name" => sub { $data_util_sub->($_) for @data },
});
}