MCPcopy Create free account
hub / github.com/CPChain/chain / benchReadChain

Function benchReadChain

core/bench_test.go:254–294  ·  view source on GitHub ↗
(b *testing.B, full bool, count uint64)

Source from the content-addressed store, hash-verified

252}
253
254func benchReadChain(b *testing.B, full bool, count uint64) {
255 testdb := database.NewMemDatabase()
256 dir, err := ioutil.TempDir("", "eth-chain-bench")
257 if err != nil {
258 b.Fatalf("cannot create temporary directory: %v", err)
259 }
260 defer os.RemoveAll(dir)
261
262 db, err := database.NewLDBDatabase(dir, 128, 1024)
263 if err != nil {
264 b.Fatalf("error opening database at %v: %v", dir, err)
265 }
266 makeChainForBench(db, full, count)
267 db.Close()
268
269 b.ReportAllocs()
270 b.ResetTimer()
271
272 for i := 0; i < b.N; i++ {
273 db, err := database.NewLDBDatabase(dir, 128, 1024)
274 remoteDB := database.NewIpfsDbWithAdapter(database.NewFakeIpfsAdapter())
275 if err != nil {
276 b.Fatalf("error opening database at %v: %v", dir, err)
277 }
278 chain, err := NewBlockChain(db, nil, configs.TestChainConfig, dpor.NewFaker(configs.ChainConfigInfo().Dpor, testdb), vm.Config{}, remoteDB, nil)
279 if err != nil {
280 b.Fatalf("error creating chain: %v", err)
281 }
282
283 for n := uint64(0); n < count; n++ {
284 header := chain.GetHeaderByNumber(n)
285 if full {
286 hash := header.Hash()
287 rawdb.ReadBody(db, hash, n)
288 rawdb.ReadReceipts(db, hash, n)
289 }
290 }
291 chain.Stop()
292 db.Close()
293 }
294}

Callers 3

Calls 7

CloseMethod · 0.95
GetHeaderByNumberMethod · 0.95
StopMethod · 0.95
makeChainForBenchFunction · 0.85
NewBlockChainFunction · 0.85
ChainConfigInfoMethod · 0.80
HashMethod · 0.65

Tested by

no test coverage detected