[groonga-dev,01556] [ANN] rroonga 3.0.5

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 7月 29日 (月) 23:31:33 JST


須藤です。

今日は肉の日ですね!
groongaのRubyバインディングであるrroonga 3.0.5をリリースしま
した。Windows版は今日リリースされたgroonga 3.0.6をバンドルし
ています。

Web: http://ranguba.org/ja/#about-rroonga

○ rroongaとは

rroongaはRubyらしい書き方でgroongaを操作できることを重視して
います。同時に、groongaの速度をそのまま生かすことも大事にして
います。

○ 今回のリリースについて

今回のリリースではメモリープールという仕組みを導入しました。
(もしかしたら名前は変更するかも。ピンとこない名前だなぁとか
思ったら教えてください。)

何をする仕組みかというと、一時テーブルを自動で解放する仕組み
です。RubyにはGCがあって一時テーブルは自動で解放されるはずな
のにどうしてこの仕組みが必要かというと、もっとこまめに解放す
るためです。こまめに解放することによりGC関連のオーバーヘッド
が少なくなり、パフォーマンスがあがります。手元のほとんど
groongaで処理をしているプログラムでは10%速くなりました。また、
最大メモリ使用量が減るというメリットもあります。

追加方は簡単で自動で位置テーブルで解放したい処理を
Groonga::Context#push_memory_poolで囲むだけです。

before:

  table.select {...}.sort(...)...

after:

  Groonga::Context.default.push_memory_pool do
    table.select {...}.sort(...)...
  end

こうするとブロックを抜けたときにブロック内で作成した一時テー
ブルを解放します。

リクエスト・レスポンス型のサービスをrroongaで作っている場合
は、レスポンス処理の部分をpush_memory_poolのブロックで囲むと
よいでしょう。

例(るりまサーチ):
  https://github.com/clear-code/rurema-search/blob/master/lib/rurema_search/groonga_searcher.rb#L412


rroongaでもう少しメモリーにやさしくしたいなぁと思ったら試し
てみてください。

○ インストール

  % gem install rroonga

○ チュートリアル

irbを使ったrroongaのチュートリアルがあります。
  http://ranguba.org/rroonga/ja/file.tutorial.html

はじめての方はまずこちらを試してみてください。

3.0.4からの変更点は以下の通りです。
  http://ranguba.org/rroonga/ja/file.news.html#3-0-5

3.0.5: 2013-07-29
=================

改善
----

  * [dumper] ダブル配列トライのダンプに対応。
  * Int8/UInt8/Int16/UInt16型の値をRubyのオブジェクトへ変換で
    きるようにした。 [groonga-dev,01524][吉岡 真治さんが報告]

  * GCを簡単に減らすためのメモリープールという仕組みを追加し
    た。

    Groonga::Context#push_memory_poolと
    Groonga::Context#pop_memory_pool が追加されています。以下
    のようにすれば一時テーブルを自動的に閉じることができます。

      context.push_memory_pool do
        # select、group、sortなどで一時テーブルを作成
      end
      # 作成された一時テーブルは自動的に閉じられている

  * 32bit整数を超えるFixnumに対応。 [xtuaokさんが報告]

修正
----

   * [dumper] カラムのないテーブルがダンプされない問題を修正。

感謝
----

  * 吉岡 真治さん
  * xtuaokさん

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




groonga-dev メーリングリストの案内
Back to archive index