mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 08:02:26 -05:00
updates our codeberg.org/gruf/go-kv log key-value formatting library to latest version, which comes with some maaaaaaajor speed boosts in the form of:
- very minimal reflect.Value{} usage
- caching prepared formatting functions per type
~~still a work-in-progress until i make a release tag on the go-kv repository, which itself is waiting on published benchmark results in the README and finishing writing some code comments~~
benchmarks so far show this to be ~3x faster than the "fmt" stdlib package on average, when run across a wide variety (106 different types) of test cases, while still creating more visually friendly log output and actually recursing down nested struct ptrs
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4341
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
|
||
|---|---|---|
| .. | ||
| format | ||
| field.go | ||
| field_fmt.go | ||
| field_format.go | ||
| LICENSE | ||
| README.md | ||
| util.go | ||
go-kv
This library provides a key-value field structure kv.Field{} that plays well with the "fmt" package. It gives an easy means of appending key-value fields to log entries, in a more performant manner that also happens to look nice! (it's not far removed from using a map[string]interface{}).
The formatting for these key-value fields is handled by the "fmt" package by default. If you set the kvformat build tag then it will use a custom formatting library found under format/.