@@ -243,7 +243,7 @@ func BenchmarkChainWrite_full_500k(b *testing.B) {
243
243
244
244
// makeChainForBench writes a given number of headers or empty blocks/receipts
245
245
// into a database.
246
- func makeChainForBench (db ethdb.Database , full bool , count uint64 ) {
246
+ func makeChainForBench (db ethdb.Database , genesis * Genesis , full bool , count uint64 ) {
247
247
var hash common.Hash
248
248
for n := uint64 (0 ); n < count ; n ++ {
249
249
header := & types.Header {
@@ -255,14 +255,17 @@ func makeChainForBench(db ethdb.Database, full bool, count uint64) {
255
255
TxHash : types .EmptyTxsHash ,
256
256
ReceiptHash : types .EmptyReceiptsHash ,
257
257
}
258
+ if n == 0 {
259
+ header = genesis .ToBlock ().Header ()
260
+ }
258
261
hash = header .Hash ()
259
262
260
263
rawdb .WriteHeader (db , header )
261
264
rawdb .WriteCanonicalHash (db , hash , n )
262
265
rawdb .WriteTd (db , hash , n , big .NewInt (int64 (n + 1 )))
263
266
264
267
if n == 0 {
265
- rawdb .WriteChainConfig (db , hash , params . AllEthashProtocolChanges )
268
+ rawdb .WriteChainConfig (db , hash , genesis . Config )
266
269
}
267
270
rawdb .WriteHeadHeaderHash (db , hash )
268
271
@@ -276,13 +279,14 @@ func makeChainForBench(db ethdb.Database, full bool, count uint64) {
276
279
}
277
280
278
281
func benchWriteChain (b * testing.B , full bool , count uint64 ) {
282
+ genesis := & Genesis {Config : params .AllEthashProtocolChanges }
279
283
for i := 0 ; i < b .N ; i ++ {
280
284
dir := b .TempDir ()
281
285
db , err := rawdb .NewLevelDBDatabase (dir , 128 , 1024 , "" , false )
282
286
if err != nil {
283
287
b .Fatalf ("error opening database at %v: %v" , dir , err )
284
288
}
285
- makeChainForBench (db , full , count )
289
+ makeChainForBench (db , genesis , full , count )
286
290
db .Close ()
287
291
}
288
292
}
@@ -294,7 +298,8 @@ func benchReadChain(b *testing.B, full bool, count uint64) {
294
298
if err != nil {
295
299
b .Fatalf ("error opening database at %v: %v" , dir , err )
296
300
}
297
- makeChainForBench (db , full , count )
301
+ genesis := & Genesis {Config : params .AllEthashProtocolChanges }
302
+ makeChainForBench (db , genesis , full , count )
298
303
db .Close ()
299
304
cacheConfig := * defaultCacheConfig
300
305
cacheConfig .TrieDirtyDisabled = true
@@ -307,7 +312,7 @@ func benchReadChain(b *testing.B, full bool, count uint64) {
307
312
if err != nil {
308
313
b .Fatalf ("error opening database at %v: %v" , dir , err )
309
314
}
310
- chain , err := NewBlockChain (db , & cacheConfig , nil , nil , ethash .NewFaker (), vm.Config {}, nil , nil )
315
+ chain , err := NewBlockChain (db , & cacheConfig , genesis , nil , ethash .NewFaker (), vm.Config {}, nil , nil )
311
316
if err != nil {
312
317
b .Fatalf ("error creating chain: %v" , err )
313
318
}
0 commit comments