6/17 GCの影響をできるだけ排除するように実装し、測り直しました。
LOUDSTrieの実装が落ち着いてきたので、パトリシアトライ、ダブルアレイ、LOUDSトライの構築、contains速度を測ってみました。
何回か測ってみたけど、だいたいこんな感じ。
| 構築(ms) | contains(ms) | |
|---|---|---|
| java.util.HashSet | 1,042 | 816 |
| PatriciaTrie(UTF-16 char[]) | 891 | 662 |
| MultilayerPatriciaTrie(多層トライ) | 3,538 | 1,354 |
| TailCompactionDoubleArray | 5,082 | 858 |
| OptimizedTailCompactionDoubleArray | 5,760 | 1,022 |
| LOUDSTrie | 922 | 1,025 |
CPUはCore i7 2.5GHz。データはWikipedia日本語タイトル127万件。パトリシアトライの実装はここ、ダブルアレイの実装はここを参照。DoubleArray2つとLOUDSTrieはPatriciaTrieを使って構築してるので、実際の構築時間はPatriciaTrieの分も必要です。
意外とLOUDSTrieが構築、検索共に頑張ってる印象。というかDoubleArrayってもっと速いんじゃなかったっけ。実装が悪いのかも知れませんが。
実装はTrie4J(GitHub)にて公開してます。
0 件のコメント:
コメントを投稿