Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
5a458da4
Commit
5a458da4
authored
Apr 25, 2016
by
zsfelfoldi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core: chain read/write speed benchmarks
parent
fdd61b83
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
119 additions
and
0 deletions
+119
-0
bench_test.go
core/bench_test.go
+119
-0
No files found.
core/bench_test.go
View file @
5a458da4
...
@@ -176,3 +176,122 @@ func benchInsertChain(b *testing.B, disk bool, gen func(int, *BlockGen)) {
...
@@ -176,3 +176,122 @@ func benchInsertChain(b *testing.B, disk bool, gen func(int, *BlockGen)) {
b
.
Fatalf
(
"insert error (block %d): %v
\n
"
,
i
,
err
)
b
.
Fatalf
(
"insert error (block %d): %v
\n
"
,
i
,
err
)
}
}
}
}
func
BenchmarkChainRead_header_10k
(
b
*
testing
.
B
)
{
benchReadChain
(
b
,
false
,
10000
)
}
func
BenchmarkChainRead_full_10k
(
b
*
testing
.
B
)
{
benchReadChain
(
b
,
true
,
10000
)
}
func
BenchmarkChainRead_header_100k
(
b
*
testing
.
B
)
{
benchReadChain
(
b
,
false
,
100000
)
}
func
BenchmarkChainRead_full_100k
(
b
*
testing
.
B
)
{
benchReadChain
(
b
,
true
,
100000
)
}
func
BenchmarkChainRead_header_500k
(
b
*
testing
.
B
)
{
benchReadChain
(
b
,
false
,
500000
)
}
func
BenchmarkChainRead_full_500k
(
b
*
testing
.
B
)
{
benchReadChain
(
b
,
true
,
500000
)
}
func
BenchmarkChainWrite_header_10k
(
b
*
testing
.
B
)
{
benchWriteChain
(
b
,
false
,
10000
)
}
func
BenchmarkChainWrite_full_10k
(
b
*
testing
.
B
)
{
benchWriteChain
(
b
,
true
,
10000
)
}
func
BenchmarkChainWrite_header_100k
(
b
*
testing
.
B
)
{
benchWriteChain
(
b
,
false
,
100000
)
}
func
BenchmarkChainWrite_full_100k
(
b
*
testing
.
B
)
{
benchWriteChain
(
b
,
true
,
100000
)
}
func
BenchmarkChainWrite_header_500k
(
b
*
testing
.
B
)
{
benchWriteChain
(
b
,
false
,
500000
)
}
func
BenchmarkChainWrite_full_500k
(
b
*
testing
.
B
)
{
benchWriteChain
(
b
,
true
,
500000
)
}
// makeChainForBench writes a given number of headers or empty blocks/receipts
// into a database.
func
makeChainForBench
(
db
ethdb
.
Database
,
full
bool
,
count
uint64
)
{
var
hash
common
.
Hash
for
n
:=
uint64
(
0
);
n
<
count
;
n
++
{
header
:=
&
types
.
Header
{
Coinbase
:
common
.
Address
{},
Number
:
big
.
NewInt
(
int64
(
n
)),
ParentHash
:
hash
,
Difficulty
:
big
.
NewInt
(
1
),
UncleHash
:
types
.
EmptyUncleHash
,
TxHash
:
types
.
EmptyRootHash
,
ReceiptHash
:
types
.
EmptyRootHash
,
}
hash
=
header
.
Hash
()
WriteHeader
(
db
,
header
)
WriteCanonicalHash
(
db
,
hash
,
n
)
WriteTd
(
db
,
hash
,
big
.
NewInt
(
int64
(
n
+
1
)))
if
full
||
n
==
0
{
block
:=
types
.
NewBlockWithHeader
(
header
)
WriteBody
(
db
,
hash
,
block
.
Body
())
WriteBlockReceipts
(
db
,
hash
,
nil
)
}
}
}
func
benchWriteChain
(
b
*
testing
.
B
,
full
bool
,
count
uint64
)
{
for
i
:=
0
;
i
<
b
.
N
;
i
++
{
dir
,
err
:=
ioutil
.
TempDir
(
""
,
"eth-chain-bench"
)
if
err
!=
nil
{
b
.
Fatalf
(
"cannot create temporary directory: %v"
,
err
)
}
db
,
err
:=
ethdb
.
NewLDBDatabase
(
dir
,
128
,
1024
)
if
err
!=
nil
{
b
.
Fatalf
(
"error opening database at %v: %v"
,
dir
,
err
)
}
makeChainForBench
(
db
,
full
,
count
)
db
.
Close
()
os
.
RemoveAll
(
dir
)
}
}
func
benchReadChain
(
b
*
testing
.
B
,
full
bool
,
count
uint64
)
{
dir
,
err
:=
ioutil
.
TempDir
(
""
,
"eth-chain-bench"
)
if
err
!=
nil
{
b
.
Fatalf
(
"cannot create temporary directory: %v"
,
err
)
}
defer
os
.
RemoveAll
(
dir
)
db
,
err
:=
ethdb
.
NewLDBDatabase
(
dir
,
128
,
1024
)
if
err
!=
nil
{
b
.
Fatalf
(
"error opening database at %v: %v"
,
dir
,
err
)
}
makeChainForBench
(
db
,
full
,
count
)
db
.
Close
()
b
.
ReportAllocs
()
b
.
ResetTimer
()
for
i
:=
0
;
i
<
b
.
N
;
i
++
{
db
,
err
:=
ethdb
.
NewLDBDatabase
(
dir
,
128
,
1024
)
if
err
!=
nil
{
b
.
Fatalf
(
"error opening database at %v: %v"
,
dir
,
err
)
}
chain
,
err
:=
NewBlockChain
(
db
,
testChainConfig
(),
FakePow
{},
new
(
event
.
TypeMux
))
if
err
!=
nil
{
b
.
Fatalf
(
"error creating chain: %v"
,
err
)
}
for
n
:=
uint64
(
0
);
n
<
count
;
n
++
{
header
:=
chain
.
GetHeaderByNumber
(
n
)
if
full
{
hash
:=
header
.
Hash
()
GetBody
(
db
,
hash
)
GetBlockReceipts
(
db
,
hash
)
}
}
db
.
Close
()
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment