xref: /aosp_15_r20/external/marisa-trie/bindings/python/benchmark.py (revision ab8db090fce404b23716c4c9194221ee27efe31c)
1*ab8db090SAndroid Build Coastguard Workerimport datetime
2*ab8db090SAndroid Build Coastguard Workerimport marisa
3*ab8db090SAndroid Build Coastguard Workerimport sys
4*ab8db090SAndroid Build Coastguard Worker
5*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
6*ab8db090SAndroid Build Coastguard Workerkeys = []
7*ab8db090SAndroid Build Coastguard Workerfor line in sys.stdin:
8*ab8db090SAndroid Build Coastguard Worker  keys.append(line.rstrip())
9*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
10*ab8db090SAndroid Build Coastguard Workerprint "input:", time_end - time_begin
11*ab8db090SAndroid Build Coastguard Worker
12*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
13*ab8db090SAndroid Build Coastguard Workerdic = dict()
14*ab8db090SAndroid Build Coastguard Workerfor i in range(len(keys)):
15*ab8db090SAndroid Build Coastguard Worker  dic[keys[i]] = i
16*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
17*ab8db090SAndroid Build Coastguard Workerprint "dict_build:", time_end - time_begin
18*ab8db090SAndroid Build Coastguard Worker
19*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
20*ab8db090SAndroid Build Coastguard Workerfor key in keys:
21*ab8db090SAndroid Build Coastguard Worker  dic.get(key)
22*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
23*ab8db090SAndroid Build Coastguard Workerprint "dict_lookup:", time_end - time_begin
24*ab8db090SAndroid Build Coastguard Worker
25*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
26*ab8db090SAndroid Build Coastguard Workerkeyset = marisa.Keyset()
27*ab8db090SAndroid Build Coastguard Workerfor key in keys:
28*ab8db090SAndroid Build Coastguard Worker  keyset.push_back(key)
29*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
30*ab8db090SAndroid Build Coastguard Workerprint "keyset_build:", time_end - time_begin
31*ab8db090SAndroid Build Coastguard Worker
32*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
33*ab8db090SAndroid Build Coastguard Workertrie = marisa.Trie()
34*ab8db090SAndroid Build Coastguard Workertrie.build(keyset)
35*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
36*ab8db090SAndroid Build Coastguard Workerprint "trie_build:", time_end - time_begin
37*ab8db090SAndroid Build Coastguard Worker
38*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
39*ab8db090SAndroid Build Coastguard Workeragent = marisa.Agent()
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_id()
44*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
45*ab8db090SAndroid Build Coastguard Workerprint "trie_agent_lookup:", time_end - time_begin
46*ab8db090SAndroid Build Coastguard Worker
47*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
48*ab8db090SAndroid Build Coastguard Workerfor key in keys:
49*ab8db090SAndroid Build Coastguard Worker  trie.lookup(key)
50*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
51*ab8db090SAndroid Build Coastguard Workerprint "trie_lookup:", time_end - time_begin
52*ab8db090SAndroid Build Coastguard Worker
53*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
54*ab8db090SAndroid Build Coastguard Workerfor i in range(len(keys)):
55*ab8db090SAndroid Build Coastguard Worker  agent.set_query(i)
56*ab8db090SAndroid Build Coastguard Worker  trie.reverse_lookup(agent)
57*ab8db090SAndroid Build Coastguard Worker  agent.key_str()
58*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
59*ab8db090SAndroid Build Coastguard Workerprint "trie_agent_reverse_lookup:", time_end - time_begin
60*ab8db090SAndroid Build Coastguard Worker
61*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
62*ab8db090SAndroid Build Coastguard Workerfor i in range(len(keys)):
63*ab8db090SAndroid Build Coastguard Worker  trie.reverse_lookup(i)
64*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
65*ab8db090SAndroid Build Coastguard Workerprint "trie_reverse_lookup:", time_end - time_begin
66*ab8db090SAndroid Build Coastguard Worker
67*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
68*ab8db090SAndroid Build Coastguard Workerfor key in keys:
69*ab8db090SAndroid Build Coastguard Worker  agent.set_query(key)
70*ab8db090SAndroid Build Coastguard Worker  while trie.common_prefix_search(agent):
71*ab8db090SAndroid Build Coastguard Worker    agent.key_str()
72*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
73*ab8db090SAndroid Build Coastguard Workerprint "trie_agent_common_prefix_search:", time_end - time_begin
74*ab8db090SAndroid Build Coastguard Worker
75*ab8db090SAndroid Build Coastguard Workertime_begin = datetime.datetime.now()
76*ab8db090SAndroid Build Coastguard Workerfor key in keys:
77*ab8db090SAndroid Build Coastguard Worker  agent.set_query(key)
78*ab8db090SAndroid Build Coastguard Worker  while trie.predictive_search(agent):
79*ab8db090SAndroid Build Coastguard Worker    agent.key_str()
80*ab8db090SAndroid Build Coastguard Workertime_end = datetime.datetime.now()
81*ab8db090SAndroid Build Coastguard Workerprint "trie_agent_predictive_search:", time_end - time_begin
82