50 lines
1.5 KiB
Groovy
50 lines
1.5 KiB
Groovy
@Grab(group='org.mapdb', module='mapdb', version='1.0.8')
|
|
import org.mapdb.DB
|
|
import org.mapdb.DBMaker
|
|
|
|
def fileName = "mapdbtest.mapdb"
|
|
if (args.size() == 1) {
|
|
fileName = args[1]
|
|
}
|
|
File tmpFile = new File(fileName)
|
|
// create/get the map named "data"
|
|
tmpFile.createNewFile()
|
|
DB db = DBMaker.newFileDB(tmpFile).make()
|
|
Map map = db.getHashMap("data")
|
|
|
|
numMessages = 1000000
|
|
|
|
println "Created store and starting"
|
|
long start = System.currentTimeMillis()
|
|
(1..numMessages).each {
|
|
String randomContent = UUID.randomUUID().toString()
|
|
// add and read some data
|
|
map.put(it, randomContent)
|
|
}
|
|
// close the store (this will persist changes)
|
|
db.commit()
|
|
db.close()
|
|
long stop = System.currentTimeMillis()
|
|
long contentSize = UUID.randomUUID().toString().bytes.length
|
|
println "Wrote $numMessages keys, ${numMessages * contentSize} bytes in ${stop - start} ms"
|
|
def writeSpeed = (numMessages * contentSize)/((stop - start)/ 1000)
|
|
println "Speed is: $writeSpeed byte/sec"
|
|
|
|
|
|
|
|
//The read part
|
|
db = DBMaker.newFileDB(tmpFile).make()
|
|
map = db.getHashMap("data")
|
|
//read now 10M keys
|
|
start = System.currentTimeMillis()
|
|
(1..numMessages).each {
|
|
int key = (int) Math.floor(Math.random() * numMessages) + 1
|
|
// add and read some data
|
|
String randomContent = map.get(key)
|
|
}
|
|
|
|
stop = System.currentTimeMillis()
|
|
println "Read $numMessages keys, ${numMessages * contentSize} bytes in ${stop - start} ms"
|
|
def readSpeed = (numMessages * contentSize)/((stop - start)/ 1000)
|
|
println "Read speed is: $readSpeed byte/sec"
|