mBaaSはSaaSと呼ばれる類のサービスなので、ハードウェア的なベンチマークができません。実体はまさにクラウドで、実際のパフォーマンスがどうなっているのか分かりづらいかと思います。
公式にはパフォーマンスについて一切保証、公表していません。そこで、ライブラリを使ってどれくらいのパフォーマンスが出ているのかチェックしてみました。
前提条件
- 上りのインターネット速度:8.81Mbps
- 下りのインターネット速度:22.80Mbps
実行内容
データストアに100件データを登録して、それをすべて削除します。これを3つ同時に実行します。計算処理は殆どありませんので、ほぼネットワークに関係しているはずです。
NCMB.initialize application_key: yaml['application_key'], client_key: yaml['client_key'] example = NCMB::DataStore.new 'Example' require 'benchmark' ary = [] Benchmark.bm 10 do |r| r.report "Save DataStore" do 100.times do |i| item = example.new item.set('String', "テスト#{i}00") item.set('Integer', i) item.set('Boolean', true) item.set('Array', [i, i * 2, i * 3, "Orange", "Tomato"]) item.set('Object', {test1: 'a', test2: 'b'}) item.set('Location', NCMB::GeoPoint.new(30, 50)) item.set('MultipleLine', "test\ntest\n") item.set('Increment', NCMB::Increment.new(i + 1)) item.set('Date', Time.now) item.save ary << item.objectId end end r.report "Delete objects" do ary.each do |objectId| item = example.new(objectId: objectId) item.delete end end end
実行結果
1つ目。
$ ruby examples/performance.rb user system total real Save DataStore 0.280000 0.070000 0.350000 ( 32.108096) Delete objects 0.270000 0.070000 0.340000 ( 17.979541) $ ruby examples/performance.rb user system total real Save DataStore 0.250000 0.070000 0.320000 ( 35.506736) Delete objects 0.270000 0.070000 0.340000 ( 20.337422) $ ruby examples/performance.rb user system total real Save DataStore 0.270000 0.070000 0.340000 ( 31.747943) Delete objects 0.290000 0.080000 0.370000 ( 20.890580)
2つ目。
$ ruby examples/performance.rb user system total real Save DataStore 0.270000 0.080000 0.350000 ( 33.449380) Delete objects 0.280000 0.070000 0.350000 ( 17.590708) $ ruby examples/performance.rb user system total real Save DataStore 0.250000 0.070000 0.320000 ( 37.433583) Delete objects 0.280000 0.070000 0.350000 ( 20.109447) $ ruby examples/performance.rb user system total real Save DataStore 0.270000 0.080000 0.350000 ( 31.778656) Delete objects 0.280000 0.070000 0.350000 ( 23.501528)
3つ目。
$ ruby examples/performance.rb user system total real Save DataStore 0.230000 0.070000 0.300000 ( 18.021677) Delete objects 0.270000 0.060000 0.330000 ( 43.242680) $ ruby examples/performance.rb user system total real Save DataStore 0.270000 0.080000 0.350000 ( 29.196634) Delete objects 0.280000 0.070000 0.350000 ( 19.666532) $ ruby examples/performance.rb user system total real Save DataStore 0.250000 0.060000 0.310000 ( 34.970395) Delete objects 0.270000 0.070000 0.340000 ( 21.207316)
パフォーマンスについて
ネットワークの状態にもよりますが、平均値としては 31.579秒(realが)にて完了しています。1件あたりとしては0.31秒ということになります。削除はもう少し早くて、22.7秒(1件当たり0.23秒)となっています。
ネットワーク速度が結果に大きく影響するので、モバイルネットワークなど若干遅い場合にはまた異なる結果となるでしょう。
モバイルネットワークの場合
モバイルネットワークで実行したところ、データストアへの保存で40秒くらいと1.3倍程度かかりました。なお、速度は次のようになっていました。
- 上りインターネット速度:4.09Mbps
- 下りインターネット速度:3.83Mbps
パフォーマンスについて明確な数値がある訳ではありませんが、目安としてもらえればと思います。データの保存についてはクライアントやサーバの処理性能よりもネットワーク速度の方が影響が大きいと思われます。検索などになるとまた別なのでご注意ください。