-
Radu Berinde authored
SetMaxEvent allocates storage for all events, which is very expensive if we want to set a high value; even with small values, the unnecessary allocation of the initial slice is measurable. We improve the performance by having a few events preallocated as part of the trace, and appending as necessary. We also co-locate the flags in event which makes it smaller (by a word). We also add a set of benchmarks; before and after amortized cost per-event is shown: name old time/op new time/op delta Trace_Default_2-32 1.19µs ± 1% 0.96µs ± 0% -18.94% Trace_Default_10-32 579ns ± 0% 635ns ± 1% +9.82% Trace_Default_100-32 463ns ± 1% 466ns ± 1% ~ Trace_Default_1000-32 451ns ± 1% 451ns ± 0% ~ Trace_Default_10000-32 451ns ± 2% 449ns ± 1% ~ Trace_10_2-32 1.41µs ± 1% 0.96µs ± 1% -31.74% Trace_10_10-32 623ns ± 1% 634ns ± 1% +1.73% Trace_10_100-32 469ns ± 1% 466ns ± 1% ~ Trace_10_1000-32 452ns ± 1% 453ns ± 2% ~ Trace_10_10000-32 451ns ± 1% 449ns ± 1% ~ Trace_100_2-32 2.78µs ± 2% 0.97µs ± 1% -65.28% Trace_100_10-32 912ns ± 1% 637ns ± 1% -30.23% Trace_100_100-32 479ns ± 1% 541ns ± 0% +12.77% Trace_100_1000-32 510ns ± 0% 541ns ± 1% +6.08% Trace_100_10000-32 514ns ± 1% 540ns ± 0% +5.14% Trace_1000_2-32 17.2µs ± 1% 1.0µs ± 1% -94.39% Trace_1000_10-32 3.90µs ± 1% 0.64µs ± 0% -83.68% Trace_1000_100-32 814ns ± 1% 542ns ± 0% -33.46% Trace_1000_1000-32 503ns ± 1% 581ns ± 0% +15.56% Trace_1000_10000-32 1.28µs ± 2% 1.03µs ± 1% -19.68% Change-Id: I5bbc12153a9f30dff821ef139583cb1c07a11069 Reviewed-on: https://go-review.googlesource.com/30615Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
f4b625ec