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