Ruby経由でCassandra 4回目

今度はinsert時に書き込むデータの大きさを変えてみる.

1バイトから10000バイトまでグルグル回す

やってる中身は前回と同じです.

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

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

[1, 10, 100, 1000, 10000].each do |data_size|
  puts "-- #{data_size} --"
  Benchmark.bm(15) do |x|
    x.report('insert') {
      10000.times { client.insert(:Scores, "Dan", {"cource" => {"math" => rand(10 ** data_size)}}) }
    }

    x.report('get') {
      10000.times { client.get(:Scores, "Dan", "cource", "math") }
    }

    x.report('count_columns') {
      10000.times { client.count_columns(:Scores, "Dan", "cource") }
    }
  end
end

実行結果

結構時間掛かった.

-- 1 --
                     user     system      total        real
insert           8.300000   2.070000  10.370000 ( 14.536000)
get              4.970000   4.850000   9.820000 ( 17.320000)
count_columns    1.040000   5.810000   6.850000 ( 14.628000)
-- 10 --
                     user     system      total        real
insert           8.470000   1.970000  10.440000 ( 14.516000)
get              5.180000   4.660000   9.840000 ( 17.324000)
count_columns    1.120000   5.570000   6.690000 ( 14.632000)
-- 100 --
                     user     system      total        real
insert           8.610000   2.050000  10.660000 ( 14.676000)
get              5.330000   4.450000   9.780000 ( 17.348000)
count_columns    1.090000   5.520000   6.610000 ( 14.632000)
-- 1000 --
                     user     system      total        real
insert          14.350000   2.580000  16.930000 ( 21.576000)
get              5.400000   3.290000   8.690000 ( 18.312000)
count_columns    1.080000   5.750000   6.830000 ( 14.628000)
-- 10000 --
                     user     system      total        real
insert         601.300000   7.620000 608.920000 (618.624000)
get              1.330000   8.170000   9.500000 ( 22.728000)
count_columns    1.230000   3.040000   4.270000 ( 17.560000)

insertサイズが10000になると異様に遅くなる.何だこりゃ.