go
go copied to clipboard
all: remove unnecessary string([]byte) conversion in fmt.Sprintf yet %s
Noticed from Orijtech's continuous benchmarking product "Bencher" per
https://dashboard.github.orijtech.com/benchmark/3245b8e4bbbd44a597480319aaa4b9fe
that there is a bunch of code in the wild that invokes:
fmt.Sprintf("%s", string([]byte(...)))
yet the "%s" format specifier in fmt has a purpose:
%s the uninterpreted bytes of the string or slice
We can improve and reduce allocations simply by invoking
fmt.Sprintf("%s", []byte(...))
which led to big improvements across every dimension:
- CPU time reduction by 11+% (ns/op)
- throughput improvement by 13+% (MBs/op)
- allocations reduction by 45+% (B/op)
- number of allocations reduction by 18+% (alloc/op)
/cc @kirbyquerby @willpoint