From 2828fa21c0ffd2a32a108b37c0417b01abc42929 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 26 Jan 2023 21:02:56 -0700 Subject: Avoid doing type switching in inner functions The CPU profiler tells me that the encoder is spending a lot of time on type switches. --- internal/base64.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'internal/base64.go') diff --git a/internal/base64.go b/internal/base64.go index 15adbf4..291a229 100644 --- a/internal/base64.go +++ b/internal/base64.go @@ -19,7 +19,10 @@ type base64Decoder struct { bufLen int } -func NewBase64Decoder(w io.Writer) io.WriteCloser { +func NewBase64Decoder(w io.Writer) interface { + io.WriteCloser + RuneWriter +} { return &base64Decoder{ dst: w, } @@ -112,6 +115,10 @@ func (dec *base64Decoder) Write(dat []byte) (int, error) { return len(dat), nil } +func (dec *base64Decoder) WriteRune(r rune) (int, error) { + return WriteRune(dec, r) +} + func (dec *base64Decoder) Close() error { if dec.bufLen == 0 { return nil -- cgit v1.2.3-2-g168b