おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

内部に転置インデックスを持つ検索エンジンクラスを作成中

とりあえず一段落したところです。検索条件に合致するように、転置インデックスの積集合を計算します。
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にでも公開しようと思います。