@@ -29,6 +29,7 @@ import (
2929 "github.com/ethereum/go-ethereum/core/vm"
3030 "github.com/ethereum/go-ethereum/crypto"
3131 "github.com/ethereum/go-ethereum/ethdb"
32+ "github.com/ethereum/go-ethereum/ethdb/pebble"
3233 "github.com/ethereum/go-ethereum/params"
3334)
3435
@@ -173,18 +174,16 @@ func genUncles(i int, gen *BlockGen) {
173174func benchInsertChain (b * testing.B , disk bool , gen func (int , * BlockGen )) {
174175 // Create the database in memory or in a temporary directory.
175176 var db ethdb.Database
176- var err error
177177 if ! disk {
178178 db = rawdb .NewMemoryDatabase ()
179179 } else {
180- dir := b .TempDir ()
181- db , err = rawdb .NewLevelDBDatabase (dir , 128 , 128 , "" , false )
180+ pdb , err := pebble .New (b .TempDir (), 128 , 128 , "" , false )
182181 if err != nil {
183182 b .Fatalf ("cannot create temporary database: %v" , err )
184183 }
184+ db = rawdb .NewDatabase (pdb )
185185 defer db .Close ()
186186 }
187-
188187 // Generate a chain of b.N blocks using the supplied block
189188 // generator function.
190189 gspec := & Genesis {
@@ -281,11 +280,11 @@ func makeChainForBench(db ethdb.Database, genesis *Genesis, full bool, count uin
281280func benchWriteChain (b * testing.B , full bool , count uint64 ) {
282281 genesis := & Genesis {Config : params .AllEthashProtocolChanges }
283282 for i := 0 ; i < b .N ; i ++ {
284- dir := b .TempDir ()
285- db , err := rawdb .NewLevelDBDatabase (dir , 128 , 1024 , "" , false )
283+ pdb , err := pebble .New (b .TempDir (), 1024 , 128 , "" , false )
286284 if err != nil {
287- b .Fatalf ("error opening database at %v : %v" , dir , err )
285+ b .Fatalf ("error opening database: %v" , err )
288286 }
287+ db := rawdb .NewDatabase (pdb )
289288 makeChainForBench (db , genesis , full , count )
290289 db .Close ()
291290 }
@@ -294,10 +293,12 @@ func benchWriteChain(b *testing.B, full bool, count uint64) {
294293func benchReadChain (b * testing.B , full bool , count uint64 ) {
295294 dir := b .TempDir ()
296295
297- db , err := rawdb . NewLevelDBDatabase (dir , 128 , 1024 , "" , false )
296+ pdb , err := pebble . New (dir , 1024 , 128 , "" , false )
298297 if err != nil {
299- b .Fatalf ("error opening database at %v : %v" , dir , err )
298+ b .Fatalf ("error opening database: %v" , err )
300299 }
300+ db := rawdb .NewDatabase (pdb )
301+
301302 genesis := & Genesis {Config : params .AllEthashProtocolChanges }
302303 makeChainForBench (db , genesis , full , count )
303304 db .Close ()
@@ -308,15 +309,16 @@ func benchReadChain(b *testing.B, full bool, count uint64) {
308309 b .ResetTimer ()
309310
310311 for i := 0 ; i < b .N ; i ++ {
311- db , err := rawdb . NewLevelDBDatabase (dir , 128 , 1024 , "" , false )
312+ pdb , err = pebble . New (dir , 1024 , 128 , "" , false )
312313 if err != nil {
313- b .Fatalf ("error opening database at %v : %v" , dir , err )
314+ b .Fatalf ("error opening database: %v" , err )
314315 }
316+ db = rawdb .NewDatabase (pdb )
317+
315318 chain , err := NewBlockChain (db , & cacheConfig , genesis , nil , ethash .NewFaker (), vm.Config {}, nil )
316319 if err != nil {
317320 b .Fatalf ("error creating chain: %v" , err )
318321 }
319-
320322 for n := uint64 (0 ); n < count ; n ++ {
321323 header := chain .GetHeaderByNumber (n )
322324 if full {
0 commit comments