xref: /aosp_15_r20/external/marisa-trie/bindings/ruby/benchmark.rb (revision ab8db090fce404b23716c4c9194221ee27efe31c)
1require "marisa"
2
3time_begin = Time.now
4keys = STDIN.read.split("\n")
5time_end = Time.now
6print "input: ", time_end - time_begin, "\n"
7
8time_begin = Time.now
9hash = Hash.new
10for key in keys
11  hash[key] = 0
12end
13time_end = Time.now
14print "hash_build: ", time_end - time_begin, "\n"
15
16time_begin = Time.now
17hash = Hash.new
18for key in keys
19  hash[key]
20end
21time_end = Time.now
22print "hash_lookup: ", time_end - time_begin, "\n"
23
24time_begin = Time.now
25keyset = Marisa::Keyset.new
26for key in keys
27  keyset.push_back(key)
28end
29time_end = Time.now
30print "keyset_build: ", time_end - time_begin, "\n"
31
32time_begin = Time.now
33trie = Marisa::Trie.new
34trie.build(keyset)
35time_end = Time.now
36print "trie_build: ", time_end - time_begin, "\n"
37
38time_begin = Time.now
39agent = Marisa::Agent.new
40for key in keys
41  agent.set_query(key)
42  trie.lookup(agent)
43  agent.key_str
44end
45time_end = Time.now
46print "trie_agent_lookup: ", time_end - time_begin, "\n"
47
48time_begin = Time.now
49for key in keys
50  trie.lookup(key)
51end
52time_end = Time.now
53print "trie_lookup: ", time_end - time_begin, "\n"
54
55time_begin = Time.now
56max_key_id = trie.size() - 1
570.upto(max_key_id) { |i|
58  agent.set_query(i)
59  trie.reverse_lookup(agent)
60  agent.key_str
61}
62time_end = Time.now
63print "trie_agent_reverse_lookup: ", time_end - time_begin, "\n"
64
65time_begin = Time.now
660.upto(max_key_id) { |i|
67  trie.reverse_lookup(i)
68}
69time_end = Time.now
70print "trie_reverse_lookup: ", time_end - time_begin, "\n"
71
72time_begin = Time.now
73for key in keys
74  agent.set_query(key)
75  while trie.common_prefix_search(agent)
76    agent.key_str
77  end
78end
79time_end = Time.now
80print "trie_agent_common_prefix_search: ", time_end - time_begin, "\n"
81
82time_begin = Time.now
83for key in keys
84  agent.set_query(key)
85  while trie.predictive_search(agent)
86    agent.key_str
87  end
88end
89time_end = Time.now
90print "trie_agent_predictive_search: ", time_end - time_begin, "\n"
91