mirror of
https://github.com/logos-messaging/go-multiaddr.git
synced 2026-01-08 07:53:08 +00:00
small Join optimizations
This commit is contained in:
parent
0f158f1163
commit
2999d4efba
13
util.go
13
util.go
@ -18,6 +18,14 @@ func Split(m Multiaddr) []Multiaddr {
|
|||||||
|
|
||||||
// Join returns a combination of addresses.
|
// Join returns a combination of addresses.
|
||||||
func Join(ms ...Multiaddr) Multiaddr {
|
func Join(ms ...Multiaddr) Multiaddr {
|
||||||
|
switch len(ms) {
|
||||||
|
case 0:
|
||||||
|
// empty multiaddr, unfortunately, we have callers that rely on
|
||||||
|
// this contract.
|
||||||
|
return multiaddr{}
|
||||||
|
case 1:
|
||||||
|
return ms[0]
|
||||||
|
}
|
||||||
|
|
||||||
length := 0
|
length := 0
|
||||||
bs := make([][]byte, len(ms))
|
bs := make([][]byte, len(ms))
|
||||||
@ -29,10 +37,7 @@ func Join(ms ...Multiaddr) Multiaddr {
|
|||||||
bidx := 0
|
bidx := 0
|
||||||
b := make([]byte, length)
|
b := make([]byte, length)
|
||||||
for _, mb := range bs {
|
for _, mb := range bs {
|
||||||
for i := range mb {
|
bidx += copy(b[bidx:], mb)
|
||||||
b[bidx] = mb[i]
|
|
||||||
bidx++
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return multiaddr{bytes: b}
|
return multiaddr{bytes: b}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user