xref: /aosp_15_r20/external/marisa-trie/bindings/perl/benchmark.pl (revision ab8db090fce404b23716c4c9194221ee27efe31c)
1use Time::HiRes;
2use marisa;
3
4my $time_begin = Time::HiRes::gettimeofday();
5my @keys = <STDIN>;
6foreach my $key (@keys) {
7  chomp($key);
8}
9my $time_end = Time::HiRes::gettimeofday();
10print "input: ", $time_end - $time_begin, "\n";
11
12$time_begin = Time::HiRes::gettimeofday();
13my %hash;
14foreach my $key (@keys) {
15  $hash{$key} = 0;
16}
17$time_end = Time::HiRes::gettimeofday();
18print "hash_build: ", $time_end - $time_begin, "\n";
19
20$time_begin = Time::HiRes::gettimeofday();
21foreach my $key (@keys) {
22  $hash{$key};
23}
24$time_end = Time::HiRes::gettimeofday();
25print "hash_lookup: ", $time_end - $time_begin, "\n";
26
27$time_begin = Time::HiRes::gettimeofday();
28my $keyset = new marisa::Keyset;
29foreach my $key (@keys) {
30  $keyset->push_back($key)
31}
32$time_end = Time::HiRes::gettimeofday();
33print "keyset_build: ", $time_end - $time_begin, "\n";
34
35$time_begin = Time::HiRes::gettimeofday();
36$trie = new marisa::Trie;
37$trie->build($keyset);
38$time_end = Time::HiRes::gettimeofday();
39print "trie_build: ", $time_end - $time_begin, "\n";
40
41$time_begin = Time::HiRes::gettimeofday();
42my $agent = new marisa::Agent;
43foreach my $key (@keys) {
44  $agent->set_query($key);
45  $trie->lookup($agent);
46  $agent->key_id();
47}
48$time_end = Time::HiRes::gettimeofday();
49print "trie_agent_lookup: ", $time_end - $time_begin, "\n";
50
51$time_begin = Time::HiRes::gettimeofday();
52foreach my $key (@keys) {
53  $trie->lookup($key);
54}
55$time_end = Time::HiRes::gettimeofday();
56print "trie_lookup: ", $time_end - $time_begin, "\n";
57
58$time_begin = Time::HiRes::gettimeofday();
59my $max_key_id = $trie->size() - 1;
60for (0..$max_key_id) {
61  $agent->set_query($_);
62  $trie->reverse_lookup($agent);
63  $agent->key_str();
64}
65$time_end = Time::HiRes::gettimeofday();
66print "trie_agent_reverse_lookup: ", $time_end - $time_begin, "\n";
67
68$time_begin = Time::HiRes::gettimeofday();
69for (0..$max_key_id) {
70  $trie->reverse_lookup($_);
71}
72$time_end = Time::HiRes::gettimeofday();
73print "trie_reverse_lookup: ", $time_end - $time_begin, "\n";
74
75$time_begin = Time::HiRes::gettimeofday();
76foreach my $key (@keys) {
77  $agent->set_query($key);
78  while ($trie->common_prefix_search($agent)) {
79    $agent->key_str();
80  }
81}
82$time_end = Time::HiRes::gettimeofday();
83print "trie_agent_common_prefix_search: ", $time_end - $time_begin, "\n";
84
85$time_begin = Time::HiRes::gettimeofday();
86foreach my $key (@keys) {
87  $agent->set_query($key);
88  while ($trie->predictive_search($agent)) {
89    $agent->key_str();
90  }
91}
92$time_end = Time::HiRes::gettimeofday();
93print "trie_agent_predictive_search: ", $time_end - $time_begin, "\n";
94