Awesome Go

goctx

CategoryUtilities
SubcategoryUtilities
Stars0

Get your context value with high performance

About goctx

Go Report Card PkgGoDev Github Workflow Build Status codecov pre-commit

goctx

Get your context value faster

How to use

Replace

v := ctx.Value(key)

With

v := goctx.Value(ctx, key)

Benchmark

There will be little difference when there is only 1~2 context.WithXXX calls

With 5 context.WithXXX calls

BenchmarkValue/5/non_parallel/std-83531368434.2 ns/op
BenchmarkValue/5/non_parallel/goctx-84280134830.0 ns/op
BenchmarkValue/5/non_parallel/pure_map-81665537772.8 ns/op
BenchmarkValue/5/parallel/std-81684204607.09 ns/op
BenchmarkValue/5/parallel/goctx-81856954626.35 ns/op
BenchmarkValue/5/parallel/pure_map-86794499717.6 ns/op

With 20 context.WithXXX calls

BenchmarkValue/20/non_parallel/std-87137338168 ns/op
BenchmarkValue/20/non_parallel/goctx-81462373081.4 ns/op
BenchmarkValue/20/non_parallel/pure_map-85282458235 ns/op
BenchmarkValue/20/parallel/std-84282685727.9 ns/op
BenchmarkValue/20/parallel/goctx-87914982315.1 ns/op
BenchmarkValue/20/parallel/pure_map-82220671753.8 ns/op

As we can see from the benchmark test, the map implementation is slower than the standard one, so it is not recommended to use RegisterValueFunc to register a context value function, unless you do not want to see nested stack with Value method call (That's also the reason why RegisterValueFunc is kept even it is not fast)

Frequently Asked Questions

What is goctx?

goctx is a Utilities library for the Go programming language. Get your context value with high performance

How do I install goctx?

Install goctx with the Go module system using `go get zerosnake0/goctx`. Check the repository for the current installation instructions.

What category does goctx belong to?

goctx is listed under Utilities, specifically Utilities.

← Back to Utilities