go/internal/lsp/debug
Ian Cottrell ae19ec7143 internal/telemetry: use atomics to get the exporter
We change the main exporter to be stored and fetched using atomics rather
than aquiring a mutex for a mild (but significant in the disabled case) speedup.
Also has the benefit of not holding a global lock over all telemetry operations.

benchstat of logging benchmatks before and after:

name                 old time/op    new time/op    delta
Baseline-8              329ns ± 2%     327ns ± 2%     ~     (p=0.181 n=19+17)
LoggingNoExporter-8    3.08µs ± 3%    2.42µs ± 2%  -21.42%  (p=0.000 n=20+19)
Logging-8              13.7µs ± 2%    13.2µs ± 1%   -3.49%  (p=0.000 n=19+19)
LoggingStdlib-8        5.39µs ± 3%    5.41µs ± 2%     ~     (p=0.177 n=19+20)

This is a replacement for https://go-review.googlesource.com/c/tools/+/212244
but built on the single exporter principle rather than the exporter list.

Change-Id: Icc99319c4357e0bcb63386c64372a733e8a76796
Reviewed-on: https://go-review.googlesource.com/c/tools/+/221218
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
2020-03-03 22:56:03 +00:00
..
info.1.11.go internal/lsp/debug: add newlines to debug messages 2019-06-12 17:36:44 +00:00
info.1.12.go internal/lsp/debug: add newlines to debug messages 2019-06-12 17:36:44 +00:00
info.go internal/lsp: change debug instance to a struct 2020-02-07 11:26:02 +00:00
metrics.go internal/lsp: split the telemetry library out 2019-08-15 21:28:02 +00:00
rpc.go internal/telemetry: removing the concept of exporter lists 2020-02-26 21:51:01 +00:00
serve.go internal/lsp: move the debug.Instance onto the Context 2020-03-03 22:54:53 +00:00
serve_test.go internal/lsp/debug: move all debug state onto the Instance 2020-02-24 22:50:47 +00:00
trace.go internal/telemetry: use atomics to get the exporter 2020-03-03 22:56:03 +00:00