morit****@razil*****
morit****@razil*****
2015年 9月 5日 (土) 00:55:50 JST
1.がいいんじゃないでしょうか! 理由は自然な感じがするからです! 1bitフラグに使うのはもったいないという考え方もありますが、 これによって消費メモリが増えるわけでもないので良いのかなーと思います。 2015-09-05 0:18 GMT+09:00 Kouhei Sutou <kou****@clear*****>: > 須藤です。 > > 森さんに相談です。 > > [groonga-dev,03423] groonga-clientのタイムアウト値と、遅いク > エリについて > > のスレッドの > > > https://osdn.jp/projects/groonga/lists/archive/dev/2015-August/003430.html > > あたりのことを解決したいと思っています。 > > ↑はざっくり言うと、10000万件のレコードに対して > html_highlight()(はてなキーワードの自動リンクみたいなやつ) > すると遅い、理由は、html_highlight()するごとにpatを新しく作っ > てそこにキーワードを詰めているから、という感じです。 > > 解決策として、コマンド実行中はpatを使いまわす、というのを考 > えていて、それを実現する仕組みはどういうのがいいかを相談した > いです。 > > 私は次のような方法を考えています。 > > 1. grn_expr_add_var()で自分で作ったgrn_objを登録しておいて、 > grn_expr_clear_vars()のときに解放するようにする。 > > GRN_BULKは↑でいけるんですが、patはいけません。なぜなら、 > grn_expr_add_var()は自分でgrn_objをアロケートするので、呼 > び出し側がアロケートしたpatをgrn_expr_clear_vars()対象に > できないからです。 > > そこで、GRN_PTRにフラグを追加して、そのフラグが立っている > ときはGRN_PTRをcloseしたときにGRN_PTRが参照している > grn_objもcloseするというのはどうかと考えています。 > > > https://github.com/groonga/groonga/commit/599af4ac79415eddb28a03a8c19dab0b7e26d843 > > という感じです。 > > メリットは自然な気がするというところです。 > > デメリットはgrn_objにしか使えない仕組みというのとフラグの > 場所がもったいないというところです。 > > 2. ctx->impl->expr_vars相当のものをもうひとつ用意して、 > grn_obj以外も1コマンド実行中に生きていられる仕組みを作る。 > > grn_expr_add_obj(grn_ctx *ctx, > const char *name, > void *object, > void(*free_func)(void *object); > > のような感じで解放する関数も一緒に登録しておけるようにし > ます。 > > grn_expr_clear_vars()を呼ぶタイミングで↑で登録したオブジェ > クトを解放します。 > > メリットはgrn_obj以外にも対応できるところです。 > > デメリットはAPIが増えることと複雑になってアレだなぁという > ところです。(varとobjで別々の名前空間を使うところとか。) > あとは、ctx->implのサイズが増えるというのがあるんですが、 > すでにmrubyのインタプリターがいるのでそこはあまり気になら > ないかなぁという感じです。 > > > どういうやり方がよさそうでしょうか? > > > -- > 須藤 功平 <kou****@clear*****> > 株式会社クリアコード <http://www.clear-code.com/> > > Groongaベースの全文検索システムを総合サポート: > http://groonga.org/ja/support/ > パッチ採用 - プログラミングが楽しい人向けの採用プロセス: > http://www.clear-code.com/recruitment/ > コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: > http://www.clear-code.com/services/code-reader/ > > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev > -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...Download