groonga / grnxx

groonga++
Other
7 stars 0 forks source link

Text による整列を効率化する #120

Open s-yata opened 9 years ago

s-yata commented 9 years ago

概要

現在の実装では, Text の整列に文字列同士の比較にもとづくクイックソートを使っています. 文字列同士の比較では効率が悪いため,マルチキークイックソートか Radix sort に変更することを検討しています. いくつかデータを用意してから,それぞれを試して速いものを選択しようと思います.

s-yata commented 9 years ago

マルチキークイックソート

N/A が邪魔になるので,最初に N/A を後ろに移動する必要があります. それが終われば,バイト単位のマルチキークイックソートで対処できます. 整列対象が少なくなれば挿入ソートへと切り替えるのは現在の実装と同じです.

前方一致が長くなると不利になるものと予想されます.

s-yata commented 9 years ago

Radix sort

基本的な考え方はマルチキークイックソートと同じになると思います. N/A が邪魔になること,バイト単位で整列を進めること,仕上げは挿入ソートを使うこと,そして前方一致が長くなると不利になることです.

s-yata commented 9 years ago

データの種類

Text では入力できるデータが何でもありになるので,ベンチマークに使用するデータの生成方法が重要になります. たとえば,擬似乱数を使って単純に生成すると, Radix sort が有利になるはずです.

そういうわけで,現在は以下のようなデータを考えています.

URL などは用意できるので,そういうのも試しておこうと思います.