通常のinsertのコード
@Grab(group='com.gmongo', module='gmongo', version='0.8') import com.mongodb.* import com.gmongo.* mongo = new GMongo("localhost", 27017) // DBが既に存在する場合は削除 dbname = "perftest" if( mongo.getDatabaseNames().contains(dbname) ){ mongo.dropDatabase(dbname) } db = mongo.getDB("perftest") st = System.currentTimeMillis() // コレクションにオブジェクトを挿入する col = db["stores"] (1..10000).each{ col.insert([country:"Japan", store:"store_${it}", sales:100]) } println "processed ${col.count()} rows in ${System.currentTimeMillis()-st}ms."bulk insertを使用したコード
@Grab(group='com.gmongo', module='gmongo', version='0.8') import com.mongodb.* import com.gmongo.* mongo = new GMongo("localhost", 27017) // DBが既に存在する場合は削除 dbname = "perftest" if( mongo.getDatabaseNames().contains(dbname) ){ mongo.dropDatabase(dbname) } db = mongo.getDB("perftest") st = System.currentTimeMillis() // コレクションにオブジェクトを挿入する col = db["stores"] (1..10000).step(2){ col.insert([ [country:"Japan", store:"store_${it}", sales:100], [country:"Japan", store:"store_${it+1}", sales:100] ]) } println "processed ${col.count()} rows in ${System.currentTimeMillis()-st}ms."実行速度計測結果
通常insert(ms) | bulk insert(x2)(ms) | |
---|---|---|
1回目 | 3855 | 2961 |
2回目 | 4076 | 2980 |
3回目 | 3576 | 3314 |
平均 | 3835.67 | 3085 |
動作環境
Groovy 1.8.0, JDK6 Update22, gmongo 0.8, MongoDB 1.8.2
関連情報
gmongoのウェブサイト
https://github.com/poiati/gmongo
groovyとMongoDBのまとめ
0 件のコメント:
コメントを投稿