trieTree, _ := partialmatch.InitTrie() insertTimes := 10000 // Trie木に入れるランダムワードの個数 // ①10~20文字のワードをランダム生成して、木に Insertする patterns, ids := createRandomWordsAndIDs(trieTree, b, insertTimes) patternHolder := createMerchantInfos(patterns, ids) _ = trieTree.Insert(patternHolder) // ② ①のいずれかのワードを選び、一致 &不一致のワードをランダム生成 // ↑をb.N回繰り返す (ベンチマーク package側で調整してくれる ) wordsToFind := createRandomWordsToFind(trieTree, b, b.N, patterns) b.ResetTimer() // ③計測開始! for i := 0; i < b.N; i++ { word := wordsToFind[i] _ = trieTree.GetMatchedIDs(word) // ④検索! } } go test -bench=Benchmark_Search -benchmem … Benchmark_Search-10 513416 2276 ns/op 4686 B/op 10 allocs/op … 10~20文字 * 1万語のTrie木に対し、大量のランダム検索を 行った。 結果、1回あたり2276 nsで検索できると計測された! ※スペースの関係で、ランダム生成関数の実装詳細は省略した