groonga / grnxx

groonga++
Other
7 stars 0 forks source link

Go wrapper: まとめてロードさせると速くなるか試す #151

Closed s-yata closed 9 years ago

s-yata commented 9 years ago

概要

値をひとつ格納する度に C の関数を呼び出していると,オーバーヘッドでほとんどの時間を費やしてしまいます. そこで, slice を使って複数の値をまとめて渡せるようにすると速くなるのではないか?というアイデアを試してみます.

s-yata commented 9 years ago

行の追加

複数行をまとめて挿入する関数を追加して, 1 行ずつ挿入する場合と 100 行ずつ挿入する場合を比較しました. 結果は以下のようになり,複数行をまとめて追加することでオーバーヘッドを減らせることがわかりました.

## Table.InsertRow() により 1 行ずつ追加(合計 1000 万行)
$ go build
$ time ./go_wrapper
real    0m0.749s
user    0m0.734s
sys 0m0.008s
## Table.InsertRows() により 100 行ずつ追加(合計 1000 万行)
$ go build
$ time ./go_wrapper
real    0m0.266s
user    0m0.254s
sys 0m0.027s