From https://old.reddit.com/r/golang/comments/f3akld/alternative_to_fmtsprintf/ and https://gist.github.com/leearmstrong/f0110cf486068a962abb78089c72fa9c
For me benchmark output was:
BenchmarkSample/sample2 666 953517 ns/op 200211 B/op 10012 allocs/op
BenchmarkSample/sample3 938 666290 ns/op 40032 B/op 5006 allocs/op
BenchmarkSample/sample4 1699 367997 ns/op 159962 B/op 5005 allocs/op
BenchmarkSample/sample5 3145 190992 ns/op 24 B/op 4 allocs/op
Thats differences of:
benchmark old ns/op new ns/op delta
BenchmarkSample/sample{2,3} 953517 666290 -30.12%
BenchmarkSample/sample{3,4} 666290 367997 -44.77%
BenchmarkSample/sample{4,5} 367997 190992 -48.10%
BenchmarkSample/sample{2,5} 953517 190992 -79.97%
benchmark old allocs new allocs delta
BenchmarkSample/sample{2,3} 10012 5006 -50.00%
BenchmarkSample/sample{3,4} 5006 5005 -0.02%
BenchmarkSample/sample{4,5} 5005 4 -99.92%
BenchmarkSample/sample{2,5} 10012 4 -99.96%
benchmark old bytes new bytes delta
BenchmarkSample/sample{2,3} 200211 40032 -80.01%
BenchmarkSample/sample{3,4} 40032 159962 +299.59%
BenchmarkSample/sample{4,5} 159962 24 -99.98%
BenchmarkSample/sample{2,5} 200211 24 -99.99%