Ruby経由でCassandra 3回目

読み書きができるようになったので,軽くベンチマークしてみる.

insert, get and count_columns

簡単に計れそうなものを3つ.それぞれ10000回繰り返す.

require 'benchmark'
require 'rubygems'
require 'cassandra'

client = Cassandra.new('MyKeyspace', 'server:9160')

Benchmark.bm(15) do |x|
  # 1024桁のランダムな数値をインサート
  x.report('insert') {
    10000.times { client.insert(:Scores, "Dan", {"cource" => {"math" => rand(10 ** 1024)}}) }
  }

  # ↑で入れた値をひたすらゲット
  x.report('get') {
    10000.times { client.get(:Scores, "Dan", "cource", "math") }
  }

  # 行数を何度もカウント
  x.report('count_columns') {
    10000.times { client.count_columns(:Scores, "Dan", "cource") }
  }
end

実行結果

                     user     system      total        real
insert          11.420000   5.430000  16.850000 ( 21.984000)
get              5.750000   4.040000   9.790000 ( 14.736000)
count_columns    1.940000   4.570000   6.510000 ( 11.072000)

ざっと見てわかることは,

  • insertがgetに比べて1.5倍くらい掛かる.
  • totalとrealの差が結構ある.
  • systemを結構食う

くらいかな〜.