mirror of
https://github.com/golang/go
synced 2024-11-06 05:36:13 -07:00
aea44109cf
This reduces memory use yet still provides the significant performance gain seen when using a fast path for small integers. Improvement of this CL comparing to code without fast path: name old time/op new time/op delta FormatIntSmall-8 35.6ns ± 1% 4.5ns ± 1% -87.30% (p=0.008 n=5+5) AppendIntSmall-8 17.4ns ± 1% 9.4ns ± 3% -45.70% (p=0.008 n=5+5) For comparison, here's the improvement before this CL to code without fast path (1% better for FormatIntSmall): name old time/op new time/op delta FormatIntSmall-8 35.6ns ± 1% 4.0ns ± 3% -88.64% (p=0.008 n=5+5) AppendIntSmall-8 17.4ns ± 1% 8.2ns ± 1% -52.80% (p=0.008 n=5+5) Thus, the code in this CL performs slower for small integers using fast path then the prior version, but this is relative to an already very fast version: name old time/op new time/op delta FormatIntSmall-8 4.05ns ± 3% 4.52ns ± 1% +11.81% (p=0.008 n=5+5) AppendIntSmall-8 8.21ns ± 1% 9.45ns ± 3% +15.05% (p=0.008 n=5+5) Measured on 2.3 GHz Intel Core i7 running macOS Sierra 10.12.3. Overall, it's still ~88% faster than without fast path for small integers, so probably worth it as it removes 100 global string slices in favor of a single string. Credits: This is based on the original (but cleaned up) version of the code by Aliaksandr Valialkin (https://go-review.googlesource.com/c/37963/). Change-Id: Icda78679c8c14666d46257894e9fa3d7f35e58b8 Reviewed-on: https://go-review.googlesource.com/38319 Reviewed-by: Martin Möhrmann <moehrmann@google.com> |
||
---|---|---|
.. | ||
testdata | ||
atob_test.go | ||
atob.go | ||
atof_test.go | ||
atof.go | ||
atoi_test.go | ||
atoi.go | ||
decimal_test.go | ||
decimal.go | ||
doc.go | ||
example_test.go | ||
extfloat.go | ||
fp_test.go | ||
ftoa_test.go | ||
ftoa.go | ||
internal_test.go | ||
isprint.go | ||
itoa_test.go | ||
itoa.go | ||
makeisprint.go | ||
quote_test.go | ||
quote.go | ||
strconv_test.go |