forked from TrueCloudLab/frostfs-node
[#1054] network: Optimize IsTLSEnabled()
No big deal, but it is called multiple times in sorting routine, this easily results in 20 allocations per group traversal. ``` goos: linux goarch: amd64 pkg: git.frostfs.info/TrueCloudLab/frostfs-node/pkg/network cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz │ old │ new │ │ sec/op │ sec/op vs base │ AddressTLSEnabled-8 184.6n ± 1% 103.3n ± 6% -44.04% (p=0.000 n=10) │ old │ new │ │ B/op │ B/op vs base │ AddressTLSEnabled-8 704.0 ± 0% 0.0 ± 0% -100.00% (p=0.000 n=10) │ old │ new │ │ allocs/op │ allocs/op vs base │ AddressTLSEnabled-8 1.000 ± 0% 0.000 ± 0% -100.00% (p=0.000 n=10) ``` Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
c09c701613
commit
c7a12ca3d8
2 changed files with 17 additions and 7 deletions
|
@ -13,11 +13,6 @@ var tls, _ = multiaddr.NewMultiaddr("/" + tlsProtocolName)
|
|||
|
||||
// IsTLSEnabled searches for wrapped TLS protocol in multiaddr.
|
||||
func (a Address) IsTLSEnabled() bool {
|
||||
for _, protoc := range a.ma.Protocols() {
|
||||
if protoc.Code == multiaddr.P_TLS {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
_, err := a.ma.ValueForProtocol(multiaddr.P_TLS)
|
||||
return err == nil
|
||||
}
|
||||
|
|
|
@ -27,3 +27,18 @@ func TestAddress_TLSEnabled(t *testing.T) {
|
|||
require.Equal(t, test.wantTLS, addr.IsTLSEnabled(), test.input)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkAddressTLSEnabled(b *testing.B) {
|
||||
var addr Address
|
||||
err := addr.FromString("/dns4/localhost/tcp/8080/tls")
|
||||
require.NoError(b, err)
|
||||
|
||||
b.ResetTimer()
|
||||
b.ReportAllocs()
|
||||
|
||||
var enabled bool
|
||||
for i := 0; i < b.N; i++ {
|
||||
enabled = addr.IsTLSEnabled()
|
||||
}
|
||||
require.True(b, enabled)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue