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を結構食う
くらいかな〜.