Feature #1135

検索結果を常に一度hash表に保存するのを改めたい

Added by daijiro MORI almost 7 years ago. Updated over 4 years ago.

Status:新規Start date:10/19/2011
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:アイスボックス

Description

絞り込みがネストする場合は一旦hash表に格納するのも良いが、不要なケースも多々ある。クエリパタンによってはarrayにしたり、カウントするだけにしたり、切り替え可能にしたい。

History

#1 Updated by Susumu Yata over 6 years ago

構築の途中で参照する必要がなければ,とりあえず配列にキーや値を入れておき,必要になったらハッシュ表を構築するというのがかなり効果的なようです. ハッシュ表に保存するのを止めるというのではなく,ハッシュ表のままで効率化するというのもアリかもしれません.

#2 Updated by Susumu Yata over 6 years ago

grn_hash の占める割合を oprofile で調査しました.

クエリの先頭 1000 件を用いた場合(全体の 20% くらい)

samples  %        symbol name
363665   20.6213  grn_expr_exec
228317   12.9465  grn_hash_add
119538    6.7783  grn_ra_ref
115035    6.5230  grn_ja_ref
105012    5.9546  grn_bulk_write
74278     4.2119  grn_bulk_write_from
68351     3.8758  grn_obj_get_value_
63923     3.6247  grn_io_win_map2
63788     3.6170  grn_hash_get_value_
61535     3.4893  grn_ra_unref

ヒット件数が大きくて処理時間の長いクエリだけを用いた場合(全体の 40% 弱)

samples  %        symbol name
16568    16.9685  grn_hash_add
7908      8.0991  grn_ra_ref
7017      7.1866  grn_expr_exec
6167      6.3161  grn_hash_cursor_next
4691      4.8044  grn_hash_cursor_get_value
4427      4.5340  grn_obj_get_value
4002      4.0987  grn_ra_unref
3961      4.0567  _grn_hash_key
3588      3.6747  grn_table_group
3574      3.6604  grn_bulk_write

時間のかかるクエリについて短縮効果が期待できるようなので,やってみる価値はあるかもしれませんね.

#3 Updated by daijiro MORI about 6 years ago

  • Project changed from Groonga Internal to Groonga

#4 Updated by daijiro MORI about 6 years ago

  • Target version set to groonga-command-1

#5 Updated by daijiro MORI over 4 years ago

  • Target version changed from groonga-command-1 to アイスボックス

GrnxxもあるのでGroongaでは手を付けない可能性があるが、アイスボックスに移動

Also available in: Atom PDF