内部に転置インデックスを持つ検索エンジンクラスを作成中
とりあえず一段落したところです。検索条件に合致するように、転置インデックスの積集合を計算します。
Rubyで集合演算といえばSetクラスですが、Setクラスは相当に遅くてぼくの求める性能には届きませんでした。転置インデックスは、Integerの集合であることがほとんどだと思いますので、そこは割り切って作ってみました。
100万までの間の3の倍数と5の倍数の積集合を求める
それぞれの集合の要素数
3 : 333334 5 : 200000
Set
user system total real
0.540000 0.180000 0.720000 ( 0.716685)
Array
user system total real
0.110000 0.020000 0.130000 ( 0.131697)
開発中のクラス
user system total real
0.060000 0.020000 0.080000 ( 0.079187)
でもまだまだ遅い気がするので、もっと速くしたいです。今は素直なアルゴリズムなので全然改良の余地がありそうですし。
もうちょっとブラシュアップしてからgithubにでも公開しようと思います。