benchmarks

package
v0.0.0-...-052ef2a Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package benchmarks contains benchmarks for slog.

These benchmarks are loosely based on github.com/uber-go/zap/benchmarks. They have the following desirable properties:

  • They test a complete log event, from the user's call to its return.

  • The benchmarked code is run concurrently in multiple goroutines, to better simulate a real server (the most common environment for structured logs).

  • Some handlers are optimistic versions of real handlers, doing real-world tasks as fast as possible (and sometimes faster, in that an implementation may not be concurrency-safe). This gives us a lower bound on handler performance, so we can evaluate the (handler-independent) core activity of the package in an end-to-end context without concern that a slow handler implementation is skewing the results.

  • We also test the built-in handlers, for comparison.

As of Go 1.20, fetching the pc for a single nearby frame is slow. We hope to improve its speed before this package is released. Run the benchmarks with

-tags nopc

to remove this cost.

Index

Constants

View Source
const TestMessage = "Test logging, but use a somewhat realistic message length."
View Source
const WantText = "" /* 209-byte string literal not displayed */

Variables

View Source
var (
	TestTime     = time.Date(2022, time.May, 1, 0, 0, 0, 0, time.UTC)
	TestString   = "7e3b3b2aaeff56a7108fe11e154200dd/7819479873059528190"
	TestInt      = 32768
	TestDuration = 23 * time.Second
	TestError    = errors.New("fail")
)
View Source
var TestAttrs = []slog.Attr{
	slog.String("string", TestString),
	slog.Int("status", TestInt),
	slog.Duration("duration", TestDuration),
	slog.Time("time", TestTime),
	slog.Any("error", TestError),
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

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