package benchmark
import "cmd/link/internal/benchmark"
Package benchmark provides a Metrics object that enables memory and CPU profiling for the linker. The Metrics objects can be used to mark stages of the code, and name the measurements during that stage. There is also optional GCs that can be performed at the end of each stage, so you can get an accurate measurement of how each stage changes live memory.
Index ¶
Types ¶
type Flags ¶
type Flags int
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
func New ¶
New creates a new Metrics object.
Typical usage should look like:
func main() { filename := "" // Set to enable per-phase pprof file output. bench := benchmark.New(benchmark.GC, filename) defer bench.Report(os.Stdout) // etc bench.Start("foo") foo() bench.Start("bar") bar() }
Note that a nil Metrics object won't cause any errors, so one could write code like:
func main() { enableBenchmarking := flag.Bool("enable", true, "enables benchmarking") flag.Parse() var bench *benchmark.Metrics if *enableBenchmarking { bench = benchmark.New(benchmark.GC) } bench.Start("foo") // etc. }
func (*Metrics) Report ¶
Report reports the metrics. Closes the currently Start(ed) range, and writes the report to the given io.Writer.
func (*Metrics) Start ¶
Start marks the beginning of a new measurement phase. Once a metric is started, it continues until either a Report is issued, or another Start is called.
Source Files ¶
- Version
- v1.24.0 (latest)
- Published
- Feb 10, 2025
- Platform
- linux/amd64
- Imports
- 7 packages
- Last checked
- 22 minutes ago –
Tools for package owners.