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
cf05ef91
Commit
cf05ef91
authored
6 years ago
by
Oleg Kovalov
Committed by
Péter Szilágyi
6 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
p2p, swarm, trie: avoid copying slices in loops (#17265)
parent
de9b0660
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
15 additions
and
15 deletions
+15
-15
table.go
p2p/discover/table.go
+4
-4
net_test.go
p2p/discv5/net_test.go
+1
-1
table.go
p2p/discv5/table.go
+4
-4
manifest.go
swarm/api/manifest.go
+3
-3
node.go
trie/node.go
+2
-2
trie.go
trie/trie.go
+1
-1
No files found.
p2p/discover/table.go
View file @
cf05ef91
...
...
@@ -160,7 +160,7 @@ func (tab *Table) ReadRandomNodes(buf []*Node) (n int) {
// Find all non-empty buckets and get a fresh slice of their entries.
var
buckets
[][]
*
Node
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
if
len
(
b
.
entries
)
>
0
{
buckets
=
append
(
buckets
,
b
.
entries
[
:
])
}
...
...
@@ -508,7 +508,7 @@ func (tab *Table) copyLiveNodes() {
defer
tab
.
mutex
.
Unlock
()
now
:=
time
.
Now
()
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
for
_
,
n
:=
range
b
.
entries
{
if
now
.
Sub
(
n
.
addedAt
)
>=
seedMinTableTime
{
tab
.
db
.
updateNode
(
n
)
...
...
@@ -524,7 +524,7 @@ func (tab *Table) closest(target common.Hash, nresults int) *nodesByDistance {
// obviously correct. I believe that tree-based buckets would make
// this easier to implement efficiently.
close
:=
&
nodesByDistance
{
target
:
target
}
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
for
_
,
n
:=
range
b
.
entries
{
close
.
push
(
n
,
nresults
)
}
...
...
@@ -533,7 +533,7 @@ func (tab *Table) closest(target common.Hash, nresults int) *nodesByDistance {
}
func
(
tab
*
Table
)
len
()
(
n
int
)
{
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
n
+=
len
(
b
.
entries
)
}
return
n
...
...
This diff is collapsed.
Click to expand it.
p2p/discv5/net_test.go
View file @
cf05ef91
...
...
@@ -355,7 +355,7 @@ func (tn *preminedTestnet) mine(target NodeID) {
fmt
.
Printf
(
" target: %#v,
\n
"
,
tn
.
target
)
fmt
.
Printf
(
" targetSha: %#v,
\n
"
,
tn
.
targetSha
)
fmt
.
Printf
(
" dists: [%d][]NodeID{
\n
"
,
len
(
tn
.
dists
))
for
ld
,
ns
:=
range
tn
.
dists
{
for
ld
,
ns
:=
range
&
tn
.
dists
{
if
len
(
ns
)
==
0
{
continue
}
...
...
This diff is collapsed.
Click to expand it.
p2p/discv5/table.go
View file @
cf05ef91
...
...
@@ -81,7 +81,7 @@ func (tab *Table) chooseBucketRefreshTarget() common.Hash {
if
printTable
{
fmt
.
Println
()
}
for
i
,
b
:=
range
tab
.
buckets
{
for
i
,
b
:=
range
&
tab
.
buckets
{
entries
+=
len
(
b
.
entries
)
if
printTable
{
for
_
,
e
:=
range
b
.
entries
{
...
...
@@ -93,7 +93,7 @@ func (tab *Table) chooseBucketRefreshTarget() common.Hash {
prefix
:=
binary
.
BigEndian
.
Uint64
(
tab
.
self
.
sha
[
0
:
8
])
dist
:=
^
uint64
(
0
)
entry
:=
int
(
randUint
(
uint32
(
entries
+
1
)))
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
if
entry
<
len
(
b
.
entries
)
{
n
:=
b
.
entries
[
entry
]
dist
=
binary
.
BigEndian
.
Uint64
(
n
.
sha
[
0
:
8
])
^
prefix
...
...
@@ -121,7 +121,7 @@ func (tab *Table) readRandomNodes(buf []*Node) (n int) {
// TODO: tree-based buckets would help here
// Find all non-empty buckets and get a fresh slice of their entries.
var
buckets
[][]
*
Node
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
if
len
(
b
.
entries
)
>
0
{
buckets
=
append
(
buckets
,
b
.
entries
[
:
])
}
...
...
@@ -175,7 +175,7 @@ func (tab *Table) closest(target common.Hash, nresults int) *nodesByDistance {
// obviously correct. I believe that tree-based buckets would make
// this easier to implement efficiently.
close
:=
&
nodesByDistance
{
target
:
target
}
for
_
,
b
:=
range
tab
.
buckets
{
for
_
,
b
:=
range
&
tab
.
buckets
{
for
_
,
n
:=
range
b
.
entries
{
close
.
push
(
n
,
nresults
)
}
...
...
This diff is collapsed.
Click to expand it.
swarm/api/manifest.go
View file @
cf05ef91
...
...
@@ -159,7 +159,7 @@ func (m *ManifestWalker) Walk(walkFn WalkFn) error {
}
func
(
m
*
ManifestWalker
)
walk
(
trie
*
manifestTrie
,
prefix
string
,
walkFn
WalkFn
)
error
{
for
_
,
entry
:=
range
trie
.
entries
{
for
_
,
entry
:=
range
&
trie
.
entries
{
if
entry
==
nil
{
continue
}
...
...
@@ -308,7 +308,7 @@ func (mt *manifestTrie) addEntry(entry *manifestTrieEntry, quitC chan bool) {
}
func
(
mt
*
manifestTrie
)
getCountLast
()
(
cnt
int
,
entry
*
manifestTrieEntry
)
{
for
_
,
e
:=
range
mt
.
entries
{
for
_
,
e
:=
range
&
mt
.
entries
{
if
e
!=
nil
{
cnt
++
entry
=
e
...
...
@@ -362,7 +362,7 @@ func (mt *manifestTrie) recalcAndStore() error {
buffer
.
WriteString
(
`{"entries":[`
)
list
:=
&
Manifest
{}
for
_
,
entry
:=
range
mt
.
entries
{
for
_
,
entry
:=
range
&
mt
.
entries
{
if
entry
!=
nil
{
if
entry
.
Hash
==
""
{
// TODO: paralellize
err
:=
entry
.
subtrie
.
recalcAndStore
()
...
...
This diff is collapsed.
Click to expand it.
trie/node.go
View file @
cf05ef91
...
...
@@ -55,7 +55,7 @@ var nilValueNode = valueNode(nil)
func
(
n
*
fullNode
)
EncodeRLP
(
w
io
.
Writer
)
error
{
var
nodes
[
17
]
node
for
i
,
child
:=
range
n
.
Children
{
for
i
,
child
:=
range
&
n
.
Children
{
if
child
!=
nil
{
nodes
[
i
]
=
child
}
else
{
...
...
@@ -98,7 +98,7 @@ func (n valueNode) String() string { return n.fstring("") }
func
(
n
*
fullNode
)
fstring
(
ind
string
)
string
{
resp
:=
fmt
.
Sprintf
(
"[
\n
%s "
,
ind
)
for
i
,
node
:=
range
n
.
Children
{
for
i
,
node
:=
range
&
n
.
Children
{
if
node
==
nil
{
resp
+=
fmt
.
Sprintf
(
"%s: <nil> "
,
indices
[
i
])
}
else
{
...
...
This diff is collapsed.
Click to expand it.
trie/trie.go
View file @
cf05ef91
...
...
@@ -356,7 +356,7 @@ func (t *Trie) delete(n node, prefix, key []byte) (bool, node, error) {
// value that is left in n or -2 if n contains at least two
// values.
pos
:=
-
1
for
i
,
cld
:=
range
n
.
Children
{
for
i
,
cld
:=
range
&
n
.
Children
{
if
cld
!=
nil
{
if
pos
==
-
1
{
pos
=
i
...
...
This diff is collapsed.
Click to expand it.
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