go icon indicating copy to clipboard operation
go copied to clipboard

all: remove unnecessary string([]byte) conversion in fmt.Sprintf yet %s

Open odeke-em opened this issue 4 years ago • 0 comments

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

odeke-em avatar Nov 20 '21 16:11 odeke-em