bench

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 24, 2023 License: BSD-3-Clause Imports: 0 Imported by: 0

Documentation

Overview

The bench package implements benchmarks for various LSP operations.

Benchmarks check out specific commits of popular and/or exemplary repositories, and script an external gopls process via a fake text editor. By default, benchmarks run the test executable as gopls (using a special "gopls mode" environment variable). A different gopls binary may be used by setting the -gopls_path or -gopls_commit flags.

This package is a work in progress.

Profiling

As benchmark functions run gopls in a separate process, the normal test flags for profiling are not useful. Instead the -gopls_cpuprofile, -gopls_memprofile, -gopls_allocprofile, and -gopls_trace flags may be used to pass through profiling flags to the gopls process. Each of these flags sets a suffix for the respective gopls profiling flag, which is prefixed with a name corresponding to the shared repository or (in some cases) benchmark name. For example, settings -gopls_cpuprofile=cpu.out will result in profiles named tools.cpu.out, BenchmarkInitialWorkspaceLoad.cpu.out, etc. Here, tools.cpu.out is the cpu profile for the shared x/tools session, which may be used by multiple benchmark functions, and BenchmarkInitialWorkspaceLoad is the cpu profile for the last iteration of the initial workspace load test, which starts a new editor session for each iteration.

Integration with perf.golang.org

Benchmarks that run with -short are automatically tracked by perf.golang.org, at https://perf.golang.org/dashboard/?benchmark=all&repository=tools&branch=release-branch.go1.20

TODO

  • add more benchmarks, and more repositories
  • fix the perf dashboard to not require the branch= parameter
  • improve this documentation

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL