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