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