go/src/encoding/base64
Joe Tsai e8cdab5c49 encoding: optimize growth behavior in Encoding.AppendDecode
The Encoding.DecodedLen API only returns the maximum length of the
expected decoded output, since it does not know about padding.
Since we have the input, we can do better by computing the
input length without padding, and then perform the DecodedLen
calculation as if there were no padding.

This avoids over-growing the destination slice if possible.
Over-growth is still possible since the input may contain
ignore characters like newlines and carriage returns,
but those a rarely encountered in practice.

Change-Id: I38b8f91de1f4fbd3a7128c491a25098bd385cf74
Reviewed-on: https://go-review.googlesource.com/c/go/+/520267
Run-TryBot: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Joseph Tsai <joetsai@digital-static.net>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2023-08-19 22:25:23 +00:00
..
base64.go encoding: optimize growth behavior in Encoding.AppendDecode 2023-08-19 22:25:23 +00:00
base64_test.go encoding: optimize growth behavior in Encoding.AppendDecode 2023-08-19 22:25:23 +00:00
example_test.go encoding/base64: add examples for Encode/Decode 2021-10-19 08:44:22 +00:00