Created
April 10, 2016 17:37
-
-
Save zsfelfoldi/7e33c333d7c180b44b25dfb20a84db9f to your computer and use it in GitHub Desktop.
This file contains 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
Benchmarking 100000 consecutive header reads from an existing "new style" database (found at DefaultDataDir/_new): | |
(note that the database being cached into memory either by leveldb or by the OS affects this test dramatically; this test has been carried out after a fresh system restart) | |
fefe@Fefe-ThinkPad-SL500:~/go-ethereum$ godep go test -v ./core -bench BenchmarkReadChain_new_header_100k -run XXX -cpuprofile new.prof | |
PASS | |
BenchmarkReadChain_new_header_100k-2 1 6754975060 ns/op | |
ok _/home/fefe/go-ethereum/core 7.218s | |
CPU profile top 100 nodes (both flat and cumulative are listed): | |
fefe@Fefe-ThinkPad-SL500:~/go-ethereum$ go tool pprof core.test.new new.prof | |
Entering interactive mode (type "help" for commands) | |
(pprof) top 100 | |
4.85s of 5.61s total (86.45%) | |
Dropped 107 nodes (cum <= 0.03s) | |
Showing top 100 nodes out of 155 (cum >= 0.07s) | |
flat flat% sum% cum cum% | |
0.28s 4.99% 4.99% 0.33s 5.88% runtime.mallocgc | |
0.25s 4.46% 9.45% 0.25s 4.46% runtime.memmove | |
0.18s 3.21% 12.66% 0.31s 5.53% runtime.deferreturn | |
0.17s 3.03% 15.69% 0.23s 4.10% github.com/golang/snappy.Decode | |
0.17s 3.03% 18.72% 0.17s 3.03% runtime.memclr | |
0.13s 2.32% 21.03% 0.13s 2.32% runtime.cmpbody | |
0.12s 2.14% 23.17% 0.12s 2.14% MCentral_Grow | |
0.12s 2.14% 25.31% 0.12s 2.14% sync/atomic.AddUint32 | |
0.11s 1.96% 27.27% 0.11s 1.96% runtime.newdefer | |
0.11s 1.96% 29.23% 0.76s 13.55% sort.Search | |
0.10s 1.78% 31.02% 0.37s 6.60% github.com/syndtr/goleveldb/leveldb.func·028 | |
0.10s 1.78% 32.80% 0.19s 3.39% github.com/syndtr/goleveldb/leveldb.internalKey.ukey | |
0.10s 1.78% 34.58% 0.10s 1.78% runtime.MSpan_Sweep | |
0.10s 1.78% 36.36% 0.10s 1.78% runtime.writebarrierptr | |
0.09s 1.60% 37.97% 0.61s 10.87% github.com/syndtr/goleveldb/leveldb.(*iComparer).Compare | |
0.09s 1.60% 39.57% 0.09s 1.60% github.com/syndtr/goleveldb/leveldb.internalKey.assert | |
0.09s 1.60% 41.18% 0.28s 4.99% github.com/syndtr/goleveldb/leveldb/table.func·001 | |
0.08s 1.43% 42.60% 0.26s 4.63% github.com/syndtr/goleveldb/leveldb/comparer.bytesComparer.Compare | |
0.08s 1.43% 44.03% 0.08s 1.43% runtime.releasem | |
0.07s 1.25% 45.28% 0.07s 1.25% encoding/binary.Uvarint | |
0.07s 1.25% 46.52% 0.33s 5.88% github.com/syndtr/goleveldb/leveldb/comparer.(*bytesComparer).Compare | |
0.07s 1.25% 47.77% 0.10s 1.78% github.com/syndtr/goleveldb/leveldb/table.(*block).entry | |
0.07s 1.25% 49.02% 0.07s 1.25% hash/crc32.update | |
0.07s 1.25% 50.27% 0.07s 1.25% runtime.memhash | |
0.06s 1.07% 51.34% 0.73s 13.01% github.com/syndtr/goleveldb/leveldb/table.(*blockIter).Seek | |
0.06s 1.07% 52.41% 0.12s 2.14% runtime.deferproc | |
0.06s 1.07% 53.48% 0.10s 1.78% runtime.freedefer | |
0.06s 1.07% 54.55% 0.12s 2.14% runtime.makeslice | |
0.06s 1.07% 55.61% 0.29s 5.17% runtime.newobject | |
0.06s 1.07% 56.68% 0.06s 1.07% scanblock | |
0.05s 0.89% 57.58% 0.18s 3.21% runtime.cmpbytes | |
0.05s 0.89% 58.47% 0.16s 2.85% runtime.growslice | |
0.05s 0.89% 59.36% 0.05s 0.89% runtime.unlock | |
0.04s 0.71% 60.07% 0.04s 0.71% ExternalCode | |
0.04s 0.71% 60.78% 0.13s 2.32% github.com/ethereum/go-ethereum/rlp.(*Stream).Bytes | |
0.04s 0.71% 61.50% 0.04s 0.71% github.com/ethereum/go-ethereum/rlp.(*Stream).willRead | |
0.04s 0.71% 62.21% 2.66s 47.42% github.com/syndtr/goleveldb/leveldb.(*version).walkOverlapping | |
0.04s 0.71% 62.92% 0.05s 0.89% github.com/syndtr/goleveldb/leveldb/cache.(*Cache).getBucket | |
0.04s 0.71% 63.64% 1.84s 32.80% github.com/syndtr/goleveldb/leveldb/table.(*Reader).find | |
0.04s 0.71% 64.35% 0.67s 11.94% github.com/syndtr/goleveldb/leveldb/table.(*Reader).getDataIter | |
0.04s 0.71% 65.06% 0.77s 13.73% github.com/syndtr/goleveldb/leveldb/table.(*Reader).readBlockCached | |
0.04s 0.71% 65.78% 0.04s 0.71% reflect.packEface | |
0.04s 0.71% 66.49% 0.04s 0.71% runtime.deferproc_m | |
0.04s 0.71% 67.20% 0.10s 1.78% runtime.nilinterhash | |
0.04s 0.71% 67.91% 0.08s 1.43% sync.(*Mutex).Lock | |
0.04s 0.71% 68.63% 0.04s 0.71% sync/atomic.CompareAndSwapUint32 | |
0.03s 0.53% 69.16% 0.06s 1.07% bytes.(*Reader).Read | |
0.03s 0.53% 69.70% 0.03s 0.53% encoding/binary.littleEndian.Uint64 | |
0.03s 0.53% 70.23% 0.85s 15.15% github.com/ethereum/go-ethereum/rlp.(*Stream).Decode | |
0.03s 0.53% 70.77% 0.16s 2.85% github.com/ethereum/go-ethereum/rlp.(*Stream).Kind | |
0.03s 0.53% 71.30% 0.10s 1.78% github.com/ethereum/go-ethereum/rlp.(*Stream).readFull | |
0.03s 0.53% 71.84% 0.23s 4.10% github.com/ethereum/go-ethereum/rlp.decodeByteArray | |
0.03s 0.53% 72.37% 2.96s 52.76% github.com/syndtr/goleveldb/leveldb.(*DB).get | |
0.03s 0.53% 72.91% 0.10s 1.78% github.com/syndtr/goleveldb/leveldb/table.(*Reader).newBlockIter | |
0.03s 0.53% 73.44% 0.08s 1.43% math/big.nat.setBytes | |
0.03s 0.53% 73.98% 0.04s 0.71% runtime.assertI2T2 | |
0.03s 0.53% 74.51% 0.05s 0.89% runtime.mapassign1 | |
0.03s 0.53% 75.04% 0.06s 1.07% sync.(*RWMutex).RLock | |
0.03s 0.53% 75.58% 0.03s 0.53% syscall.Syscall6 | |
0.02s 0.36% 75.94% 0.05s 0.89% container/list.(*List).insertValue | |
0.02s 0.36% 76.29% 3.18s 56.68% github.com/ethereum/go-ethereum/ethdb.(*LDBDatabase).Get | |
0.02s 0.36% 76.65% 0.08s 1.43% github.com/ethereum/go-ethereum/rlp.(*Stream).List | |
0.02s 0.36% 77.01% 0.07s 1.25% github.com/ethereum/go-ethereum/rlp.(*Stream).readByte | |
0.02s 0.36% 77.36% 0.13s 2.32% github.com/ethereum/go-ethereum/rlp.(*Stream).readKind | |
0.02s 0.36% 77.72% 0.96s 17.11% github.com/ethereum/go-ethereum/rlp.Decode | |
0.02s 0.36% 78.07% 0.69s 12.30% github.com/ethereum/go-ethereum/rlp.func·005 | |
0.02s 0.36% 78.43% 0.09s 1.60% github.com/syndtr/goleveldb/leveldb.(*DB).getMems | |
0.02s 0.36% 78.79% 0.06s 1.07% github.com/syndtr/goleveldb/leveldb.(*DB).releaseSnapshot | |
0.02s 0.36% 79.14% 2.08s 37.08% github.com/syndtr/goleveldb/leveldb.(*tOps).find | |
0.02s 0.36% 79.50% 2.68s 47.77% github.com/syndtr/goleveldb/leveldb.(*version).get | |
0.02s 0.36% 79.86% 0.04s 0.71% github.com/syndtr/goleveldb/leveldb.internalKey.num | |
0.02s 0.36% 80.21% 0.82s 14.62% github.com/syndtr/goleveldb/leveldb/cache.(*Cache).Get | |
0.02s 0.36% 80.57% 0.05s 0.89% github.com/syndtr/goleveldb/leveldb/memdb.(*DB).findGE | |
0.02s 0.36% 80.93% 1.86s 33.16% github.com/syndtr/goleveldb/leveldb/table.(*Reader).Find | |
0.02s 0.36% 81.28% 0.20s 3.57% github.com/syndtr/goleveldb/leveldb/table.(*blockIter).Next | |
0.02s 0.36% 81.64% 0.03s 0.53% github.com/syndtr/goleveldb/leveldb/table.decodeBlockHandle | |
0.02s 0.36% 82.00% 0.04s 0.71% runtime.mapaccess1 | |
0.02s 0.36% 82.35% 0.06s 1.07% sync.(*Mutex).Unlock | |
0.02s 0.36% 82.71% 0.06s 1.07% sync.(*RWMutex).RUnlock | |
0.01s 0.18% 82.89% 2.83s 50.45% _/home/fefe/go-ethereum/core.(*HeaderChain).getHeader | |
0.01s 0.18% 83.07% 1.75s 31.19% _/home/fefe/go-ethereum/core.GetCanonicalHash | |
0.01s 0.18% 83.24% 2.55s 45.45% _/home/fefe/go-ethereum/core.GetHeader | |
0.01s 0.18% 83.42% 1.55s 27.63% _/home/fefe/go-ethereum/core.GetHeaderRLP | |
0.01s 0.18% 83.60% 0.09s 1.60% github.com/ethereum/go-ethereum/rlp.(*Stream).Reset | |
0.01s 0.18% 83.78% 3.16s 56.33% github.com/syndtr/goleveldb/leveldb.(*DB).Get | |
0.01s 0.18% 83.96% 0.03s 0.53% github.com/syndtr/goleveldb/leveldb.(*iComparer).uCompare | |
0.01s 0.18% 84.14% 2.12s 37.79% github.com/syndtr/goleveldb/leveldb.func·032 | |
0.01s 0.18% 84.31% 0.03s 0.53% github.com/syndtr/goleveldb/leveldb.makeInternalKey | |
0.01s 0.18% 84.49% 0.04s 0.71% github.com/syndtr/goleveldb/leveldb/cache.(*Handle).Release | |
0.01s 0.18% 84.67% 0.08s 1.43% github.com/syndtr/goleveldb/leveldb/cache.(*lru).Promote | |
0.01s 0.18% 84.85% 0.04s 0.71% github.com/syndtr/goleveldb/leveldb/cache.(*mBucket).get | |
0.01s 0.18% 85.03% 0.06s 1.07% github.com/syndtr/goleveldb/leveldb/memdb.(*DB).Find | |
0.01s 0.18% 85.20% 0.03s 0.53% github.com/syndtr/goleveldb/leveldb/storage.fsParseName | |
0.01s 0.18% 85.38% 0.32s 5.70% github.com/syndtr/goleveldb/leveldb/table.(*block).seek | |
0.01s 0.18% 85.56% 0.04s 0.71% github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).Get | |
0.01s 0.18% 85.74% 0.09s 1.60% math/big.(*Int).SetBytes | |
0.01s 0.18% 85.92% 0.06s 1.07% reflect.Value.Interface | |
0.01s 0.18% 86.10% 0.05s 0.89% reflect.valueInterface | |
0.01s 0.18% 86.27% 0.06s 1.07% runtime.mapaccess2 | |
0.01s 0.18% 86.45% 0.07s 1.25% runtime.mapdelete | |
(pprof) | |
(pprof) | |
(pprof) | |
(pprof) top 100 -cum | |
4.11s of 5.61s total (73.26%) | |
Dropped 107 nodes (cum <= 0.03s) | |
Showing top 100 nodes out of 155 (cum >= 0.06s) | |
flat flat% sum% cum cum% | |
0 0% 0% 4.68s 83.42% runtime.goexit | |
0 0% 0% 4.64s 82.71% _/home/fefe/go-ethereum/core.BenchmarkReadChain_new_header_100k | |
0 0% 0% 4.64s 82.71% _/home/fefe/go-ethereum/core.benchReadChain | |
0 0% 0% 4.64s 82.71% testing.(*B).launch | |
0 0% 0% 4.64s 82.71% testing.(*B).runN | |
0 0% 0% 4.58s 81.64% _/home/fefe/go-ethereum/core.(*BlockChain).GetHeaderByNumber | |
0 0% 0% 4.58s 81.64% _/home/fefe/go-ethereum/core.(*HeaderChain).GetHeaderByNumber | |
0.02s 0.36% 0.36% 3.18s 56.68% github.com/ethereum/go-ethereum/ethdb.(*LDBDatabase).Get | |
0.01s 0.18% 0.53% 3.16s 56.33% github.com/syndtr/goleveldb/leveldb.(*DB).Get | |
0.03s 0.53% 1.07% 2.96s 52.76% github.com/syndtr/goleveldb/leveldb.(*DB).get | |
0.01s 0.18% 1.25% 2.83s 50.45% _/home/fefe/go-ethereum/core.(*HeaderChain).getHeader | |
0.02s 0.36% 1.60% 2.68s 47.77% github.com/syndtr/goleveldb/leveldb.(*version).get | |
0.04s 0.71% 2.32% 2.66s 47.42% github.com/syndtr/goleveldb/leveldb.(*version).walkOverlapping | |
0.01s 0.18% 2.50% 2.55s 45.45% _/home/fefe/go-ethereum/core.GetHeader | |
0.01s 0.18% 2.67% 2.12s 37.79% github.com/syndtr/goleveldb/leveldb.func·032 | |
0.02s 0.36% 3.03% 2.08s 37.08% github.com/syndtr/goleveldb/leveldb.(*tOps).find | |
0.02s 0.36% 3.39% 1.86s 33.16% github.com/syndtr/goleveldb/leveldb/table.(*Reader).Find | |
0.04s 0.71% 4.10% 1.84s 32.80% github.com/syndtr/goleveldb/leveldb/table.(*Reader).find | |
0.01s 0.18% 4.28% 1.75s 31.19% _/home/fefe/go-ethereum/core.GetCanonicalHash | |
0.01s 0.18% 4.46% 1.55s 27.63% _/home/fefe/go-ethereum/core.GetHeaderRLP | |
0.02s 0.36% 4.81% 0.96s 17.11% github.com/ethereum/go-ethereum/rlp.Decode | |
0 0% 4.81% 0.86s 15.33% System | |
0.03s 0.53% 5.35% 0.85s 15.15% github.com/ethereum/go-ethereum/rlp.(*Stream).Decode | |
0.02s 0.36% 5.70% 0.82s 14.62% github.com/syndtr/goleveldb/leveldb/cache.(*Cache).Get | |
0.04s 0.71% 6.42% 0.77s 13.73% github.com/syndtr/goleveldb/leveldb/table.(*Reader).readBlockCached | |
0.11s 1.96% 8.38% 0.76s 13.55% sort.Search | |
0.06s 1.07% 9.45% 0.73s 13.01% github.com/syndtr/goleveldb/leveldb/table.(*blockIter).Seek | |
0.02s 0.36% 9.80% 0.69s 12.30% github.com/ethereum/go-ethereum/rlp.func·005 | |
0 0% 9.80% 0.69s 12.30% github.com/syndtr/goleveldb/leveldb/cache.(*NamespaceGetter).Get | |
0.04s 0.71% 10.52% 0.67s 11.94% github.com/syndtr/goleveldb/leveldb/table.(*Reader).getDataIter | |
0.09s 1.60% 12.12% 0.61s 10.87% github.com/syndtr/goleveldb/leveldb.(*iComparer).Compare | |
0 0% 12.12% 0.45s 8.02% github.com/syndtr/goleveldb/leveldb.tFiles.searchMax | |
0.10s 1.78% 13.90% 0.37s 6.60% github.com/syndtr/goleveldb/leveldb.func·028 | |
0 0% 13.90% 0.37s 6.60% github.com/syndtr/goleveldb/leveldb/table.(*Reader).readBlock | |
0 0% 13.90% 0.37s 6.60% github.com/syndtr/goleveldb/leveldb/table.(*Reader).readRawBlock | |
0 0% 13.90% 0.35s 6.24% github.com/syndtr/goleveldb/leveldb/table.func·003 | |
0 0% 13.90% 0.33s 5.88% github.com/ethereum/go-ethereum/rlp.decodeBigInt | |
0.07s 1.25% 15.15% 0.33s 5.88% github.com/syndtr/goleveldb/leveldb/comparer.(*bytesComparer).Compare | |
0.28s 4.99% 20.14% 0.33s 5.88% runtime.mallocgc | |
0.01s 0.18% 20.32% 0.32s 5.70% github.com/syndtr/goleveldb/leveldb/table.(*block).seek | |
0.18s 3.21% 23.53% 0.31s 5.53% runtime.deferreturn | |
0.06s 1.07% 24.60% 0.29s 5.17% runtime.newobject | |
0.09s 1.60% 26.20% 0.28s 4.99% github.com/syndtr/goleveldb/leveldb/table.func·001 | |
0.08s 1.43% 27.63% 0.26s 4.63% github.com/syndtr/goleveldb/leveldb/comparer.bytesComparer.Compare | |
0.25s 4.46% 32.09% 0.25s 4.46% runtime.memmove | |
0.03s 0.53% 32.62% 0.23s 4.10% github.com/ethereum/go-ethereum/rlp.decodeByteArray | |
0.17s 3.03% 35.65% 0.23s 4.10% github.com/golang/snappy.Decode | |
0.02s 0.36% 36.01% 0.20s 3.57% github.com/syndtr/goleveldb/leveldb/table.(*blockIter).Next | |
0 0% 36.01% 0.19s 3.39% github.com/hashicorp/golang-lru.(*Cache).Add | |
0.10s 1.78% 37.79% 0.19s 3.39% github.com/syndtr/goleveldb/leveldb.internalKey.ukey | |
0.05s 0.89% 38.68% 0.18s 3.21% runtime.cmpbytes | |
0 0% 38.68% 0.17s 3.03% github.com/hashicorp/golang-lru/simplelru.(*LRU).Add | |
0.17s 3.03% 41.71% 0.17s 3.03% runtime.memclr | |
0.03s 0.53% 42.25% 0.16s 2.85% github.com/ethereum/go-ethereum/rlp.(*Stream).Kind | |
0 0% 42.25% 0.16s 2.85% github.com/syndtr/goleveldb/leveldb/table.(*Reader).getIndexBlock | |
0.05s 0.89% 43.14% 0.16s 2.85% runtime.growslice | |
0.04s 0.71% 43.85% 0.13s 2.32% github.com/ethereum/go-ethereum/rlp.(*Stream).Bytes | |
0.02s 0.36% 44.21% 0.13s 2.32% github.com/ethereum/go-ethereum/rlp.(*Stream).readKind | |
0 0% 44.21% 0.13s 2.32% github.com/syndtr/goleveldb/leveldb.(*tOps).open | |
0.13s 2.32% 46.52% 0.13s 2.32% runtime.cmpbody | |
0.12s 2.14% 48.66% 0.12s 2.14% MCentral_Grow | |
0.06s 1.07% 49.73% 0.12s 2.14% runtime.deferproc | |
0.06s 1.07% 50.80% 0.12s 2.14% runtime.makeslice | |
0.12s 2.14% 52.94% 0.12s 2.14% sync/atomic.AddUint32 | |
0.11s 1.96% 54.90% 0.11s 1.96% runtime.newdefer | |
0.03s 0.53% 55.44% 0.10s 1.78% github.com/ethereum/go-ethereum/rlp.(*Stream).readFull | |
0.03s 0.53% 55.97% 0.10s 1.78% github.com/syndtr/goleveldb/leveldb/table.(*Reader).newBlockIter | |
0.07s 1.25% 57.22% 0.10s 1.78% github.com/syndtr/goleveldb/leveldb/table.(*block).entry | |
0.10s 1.78% 59.00% 0.10s 1.78% runtime.MSpan_Sweep | |
0.06s 1.07% 60.07% 0.10s 1.78% runtime.freedefer | |
0.04s 0.71% 60.78% 0.10s 1.78% runtime.nilinterhash | |
0.10s 1.78% 62.57% 0.10s 1.78% runtime.writebarrierptr | |
0.01s 0.18% 62.75% 0.09s 1.60% github.com/ethereum/go-ethereum/rlp.(*Stream).Reset | |
0 0% 62.75% 0.09s 1.60% github.com/ethereum/go-ethereum/rlp.NewStream | |
0.02s 0.36% 63.10% 0.09s 1.60% github.com/syndtr/goleveldb/leveldb.(*DB).getMems | |
0.09s 1.60% 64.71% 0.09s 1.60% github.com/syndtr/goleveldb/leveldb.internalKey.assert | |
0.01s 0.18% 64.88% 0.09s 1.60% math/big.(*Int).SetBytes | |
0.02s 0.36% 65.24% 0.08s 1.43% github.com/ethereum/go-ethereum/rlp.(*Stream).List | |
0 0% 65.24% 0.08s 1.43% github.com/hashicorp/golang-lru.(*Cache).Get | |
0.01s 0.18% 65.42% 0.08s 1.43% github.com/syndtr/goleveldb/leveldb/cache.(*lru).Promote | |
0.03s 0.53% 65.95% 0.08s 1.43% math/big.nat.setBytes | |
0.08s 1.43% 67.38% 0.08s 1.43% runtime.releasem | |
0.04s 0.71% 68.09% 0.08s 1.43% sync.(*Mutex).Lock | |
0 0% 68.09% 0.07s 1.25% GC | |
0.07s 1.25% 69.34% 0.07s 1.25% encoding/binary.Uvarint | |
0.02s 0.36% 69.70% 0.07s 1.25% github.com/ethereum/go-ethereum/rlp.(*Stream).readByte | |
0 0% 69.70% 0.07s 1.25% github.com/hashicorp/golang-lru/simplelru.(*LRU).removeElement | |
0 0% 69.70% 0.07s 1.25% github.com/hashicorp/golang-lru/simplelru.(*LRU).removeOldest | |
0 0% 69.70% 0.07s 1.25% github.com/syndtr/goleveldb/leveldb/util.CRC.Update | |
0 0% 69.70% 0.07s 1.25% github.com/syndtr/goleveldb/leveldb/util.NewCRC | |
0 0% 69.70% 0.07s 1.25% hash/crc32.Update | |
0.07s 1.25% 70.94% 0.07s 1.25% hash/crc32.update | |
0 0% 70.94% 0.07s 1.25% hash/crc32.updateCastagnoli | |
0.01s 0.18% 71.12% 0.07s 1.25% runtime.mapdelete | |
0.07s 1.25% 72.37% 0.07s 1.25% runtime.memhash | |
0.03s 0.53% 72.91% 0.06s 1.07% bytes.(*Reader).Read | |
0 0% 72.91% 0.06s 1.07% github.com/ethereum/go-ethereum/ethdb.NewLDBDatabase | |
0 0% 72.91% 0.06s 1.07% github.com/ethereum/go-ethereum/rlp.cachedTypeInfo | |
0 0% 72.91% 0.06s 1.07% github.com/syndtr/goleveldb/leveldb.(*DB).acquireSnapshot | |
0.02s 0.36% 73.26% 0.06s 1.07% github.com/syndtr/goleveldb/leveldb.(*DB).releaseSnapshot |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment