]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/asn1: remove allocation from init
authorTomasz Jezierski <tjomek.jezierski@gmail.com>
Fri, 30 Sep 2022 14:17:45 +0000 (16:17 +0200)
committerGopher Robot <gobot@golang.org>
Tue, 4 Oct 2022 23:29:48 +0000 (23:29 +0000)
asn1 allocates due to reflect.TypeOf(new(big.Int)) in init time.
We could replace it with (*big.Int)(nil).

Before:
init encoding/asn1 @1.0 ms, 0.009 ms clock, 224 bytes, 7 allocs

After:
init encoding/asn1 @0.70 ms, 0.002 ms clock, 192 bytes, 6 allocs

Fixes #55973

Change-Id: I7c3cc0f48631af73cf34ad3c731c380f46c72359
Reviewed-on: https://go-review.googlesource.com/c/go/+/435257
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: hopehook <hopehook@golangcn.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>

src/encoding/asn1/asn1.go

index 6a7aa473a5c0b0d3b81cf2eb892a7fe4e1be99e3..2e320897e31dc64455f96e66204a627123ebc906 100644 (file)
@@ -660,7 +660,7 @@ var (
        timeType             = reflect.TypeOf(time.Time{})
        rawValueType         = reflect.TypeOf(RawValue{})
        rawContentsType      = reflect.TypeOf(RawContent(nil))
-       bigIntType           = reflect.TypeOf(new(big.Int))
+       bigIntType           = reflect.TypeOf((*big.Int)(nil))
 )
 
 // invalidLength reports whether offset + length > sliceLength, or if the