-
Notifications
You must be signed in to change notification settings - Fork 6
/
bench.pl
38 lines (33 loc) · 1.02 KB
/
bench.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
#!/usr/bin/perl
use strict;
use warnings;
use Search::Tools::Tokenizer;
use Search::Tools::UTF8;
use Benchmark qw(:all);
use File::Slurp;
my $greek = to_utf8( read_file('t/docs/greek_and_ojibwe.txt') );
my $ascii = to_utf8( read_file('t/docs/ascii.txt') );
my $tokenizer = Search::Tools::Tokenizer->new();
cmpthese(
10000,
{ 'pure-perl-greek' => sub {
my $tokens = $tokenizer->tokenize_pp( $greek, \&heat_seeker );
},
'xs-greek' => sub {
my $tokens = $tokenizer->tokenize( $greek, \&heat_seeker );
},
'pure-perl-ascii' => sub {
my $tokens = $tokenizer->tokenize_pp( $ascii, \&heat_seeker );
},
'xs-ascii' => sub {
my $tokens = $tokenizer->tokenize( $ascii, \&heat_seeker );
},
'xs-ascii-heatseeker-qr' => sub {
my $tokens = $tokenizer->tokenize( $ascii, qr/\w/ );
},
}
);
sub heat_seeker {
# trivial case to measure sub call overhead vs qr//
$_[0]->set_hot( $_[0] =~ m/\w/ );
}