Created
August 19, 2017 07:48
-
-
Save kushti/b3ebe2af75a95aed9aaae86db6c5f6f5 to your computer and use it in GitHub Desktop.
MptBench.scala
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object MptBench extends App { | |
val dbPath = Files.createTempDirectory("testdb").toAbsolutePath.toString | |
val dataSource = LevelDBDataSource(new LevelDbConfig { | |
override val verifyChecksums: Boolean = false | |
override val paranoidChecks: Boolean = false | |
override val createIfMissing: Boolean = true | |
override val path: String = dbPath | |
}) | |
try { | |
val hashFn = kec256(_: Array[Byte]) | |
val ns = new ArchiveNodeStorage(new NodeStorage(dataSource)) | |
val EmptyTrie = MerklePatriciaTrie[Array[Byte], Array[Byte]](ns, hashFn) | |
var t = System.currentTimeMillis() | |
(1 to 20000000).foldLeft(EmptyTrie){case (trie, i) => | |
val k = hashFn(("hello" + i).getBytes) | |
val v = hashFn(("world" + i).getBytes) | |
if (i % 100000 == 0) { | |
val newT = System.currentTimeMillis() | |
val delta = (newT - t) / 1000.0 | |
t = newT | |
println(s"=== $i elements put, time for batch is: $delta sec") | |
} | |
trie.put(k, v) | |
} | |
} finally { | |
val dir = new File(dbPath) | |
!dir.exists() || dir.delete() | |
} | |
} | |
/* | |
=== 100000 elements put, time for batch is: 48.951 sec | |
=== 200000 elements put, time for batch is: 75.393 sec | |
=== 300000 elements put, time for batch is: 98.324 sec | |
=== 400000 elements put, time for batch is: 109.106 sec | |
=== 500000 elements put, time for batch is: 156.889 sec | |
=== 600000 elements put, time for batch is: 138.847 sec | |
=== 700000 elements put, time for batch is: 186.155 sec | |
=== 800000 elements put, time for batch is: 171.507 sec | |
=== 900000 elements put, time for batch is: 162.959 sec | |
=== 1000000 elements put, time for batch is: 198.208 sec | |
=== 1100000 elements put, time for batch is: 219.322 sec | |
=== 1200000 elements put, time for batch is: 212.04 sec | |
=== 1300000 elements put, time for batch is: 218.092 sec | |
=== 1400000 elements put, time for batch is: 231.937 sec | |
=== 1500000 elements put, time for batch is: 242.701 sec | |
=== 1600000 elements put, time for batch is: 171.337 sec | |
=== 1700000 elements put, time for batch is: 254.583 sec | |
=== 1800000 elements put, time for batch is: 199.0 sec | |
=== 1900000 elements put, time for batch is: 224.389 sec | |
=== 2000000 elements put, time for batch is: 282.309 sec | |
=== 2100000 elements put, time for batch is: 219.739 sec | |
=== 2200000 elements put, time for batch is: 338.911 sec | |
=== 2300000 elements put, time for batch is: 454.703 sec | |
=== 2400000 elements put, time for batch is: 484.253 sec | |
=== 2500000 elements put, time for batch is: 467.943 sec | |
=== 2600000 elements put, time for batch is: 477.537 sec | |
=== 2700000 elements put, time for batch is: 693.232 sec | |
=== 2800000 elements put, time for batch is: 640.633 sec | |
=== 2900000 elements put, time for batch is: 598.214 sec | |
=== 3000000 elements put, time for batch is: 831.93 sec | |
=== 3100000 elements put, time for batch is: 1049.654 sec | |
=== 3200000 elements put, time for batch is: 678.725 sec | |
=== 3300000 elements put, time for batch is: 452.85 sec | |
=== 3400000 elements put, time for batch is: 483.753 sec | |
=== 3500000 elements put, time for batch is: 481.295 sec | |
=== 3600000 elements put, time for batch is: 530.019 sec | |
=== 3700000 elements put, time for batch is: 511.661 sec | |
=== 3800000 elements put, time for batch is: 556.845 sec | |
=== 3900000 elements put, time for batch is: 623.073 sec | |
=== 4000000 elements put, time for batch is: 693.388 sec | |
=== 4100000 elements put, time for batch is: 737.724 sec | |
=== 4200000 elements put, time for batch is: 817.957 sec | |
=== 4300000 elements put, time for batch is: 794.104 sec | |
=== 4400000 elements put, time for batch is: 839.309 sec | |
=== 4500000 elements put, time for batch is: 867.375 sec | |
=== 4600000 elements put, time for batch is: 800.932 sec | |
=== 4700000 elements put, time for batch is: 790.252 sec | |
=== 4800000 elements put, time for batch is: 961.278 sec | |
=== 4900000 elements put, time for batch is: 958.405 sec | |
=== 5000000 elements put, time for batch is: 978.193 sec | |
=== 5100000 elements put, time for batch is: 1061.059 sec | |
=== 5200000 elements put, time for batch is: 1010.153 sec | |
=== 5300000 elements put, time for batch is: 931.861 sec | |
=== 5400000 elements put, time for batch is: 903.798 sec | |
=== 5500000 elements put, time for batch is: 1016.238 sec | |
=== 5600000 elements put, time for batch is: 1177.373 sec | |
=== 5700000 elements put, time for batch is: 1440.37 sec | |
=== 5800000 elements put, time for batch is: 1306.17 sec | |
=== 5900000 elements put, time for batch is: 1096.787 sec | |
=== 6000000 elements put, time for batch is: 1041.966 sec | |
=== 6100000 elements put, time for batch is: 1012.737 sec | |
=== 6200000 elements put, time for batch is: 1093.467 sec | |
=== 6300000 elements put, time for batch is: 1251.618 sec | |
=== 6400000 elements put, time for batch is: 1290.693 sec | |
=== 6500000 elements put, time for batch is: 1257.63 sec | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment