require "marisa" time_begin = Time.now keys = STDIN.read.split("\n") time_end = Time.now print "input: ", time_end - time_begin, "\n" time_begin = Time.now hash = Hash.new for key in keys hash[key] = 0 end time_end = Time.now print "hash_build: ", time_end - time_begin, "\n" time_begin = Time.now hash = Hash.new for key in keys hash[key] end time_end = Time.now print "hash_lookup: ", time_end - time_begin, "\n" time_begin = Time.now keyset = Marisa::Keyset.new for key in keys keyset.push_back(key) end time_end = Time.now print "keyset_build: ", time_end - time_begin, "\n" time_begin = Time.now trie = Marisa::Trie.new trie.build(keyset) time_end = Time.now print "trie_build: ", time_end - time_begin, "\n" time_begin = Time.now agent = Marisa::Agent.new for key in keys agent.set_query(key) trie.lookup(agent) agent.key_str end time_end = Time.now print "trie_agent_lookup: ", time_end - time_begin, "\n" time_begin = Time.now for key in keys trie.lookup(key) end time_end = Time.now print "trie_lookup: ", time_end - time_begin, "\n" time_begin = Time.now max_key_id = trie.size() - 1 0.upto(max_key_id) { |i| agent.set_query(i) trie.reverse_lookup(agent) agent.key_str } time_end = Time.now print "trie_agent_reverse_lookup: ", time_end - time_begin, "\n" time_begin = Time.now 0.upto(max_key_id) { |i| trie.reverse_lookup(i) } time_end = Time.now print "trie_reverse_lookup: ", time_end - time_begin, "\n" time_begin = Time.now for key in keys agent.set_query(key) while trie.common_prefix_search(agent) agent.key_str end end time_end = Time.now print "trie_agent_common_prefix_search: ", time_end - time_begin, "\n" time_begin = Time.now for key in keys agent.set_query(key) while trie.predictive_search(agent) agent.key_str end end time_end = Time.now print "trie_agent_predictive_search: ", time_end - time_begin, "\n"