GoToSocial/vendor/codeberg.org/gruf/go-mangler
kim 51c156cca1
pull in latest go-kv, go-cache (#1530)
Signed-off-by: kim <grufwub@gmail.com>
2023-02-19 10:36:38 +01:00
..
LICENSE pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00
README.md pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00
helpers.go pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00
init.go pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00
load.go pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00
mangle.go pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00
manglers.go pull in latest go-kv, go-cache (#1530) 2023-02-19 10:36:38 +01:00

README.md

go-mangler

Documentation.

To put it simply is a bit of an odd library. It aims to provide incredibly fast, unique string outputs for all default supported input data types during a given runtime instance.

It is useful, for example, for use as part of larger abstractions involving hashmaps. That was my particular usecase anyways...

This package does make liberal use of the "unsafe" package.

Benchmarks are below. Those with missing values panicked during our set of benchmarks, usually a case of not handling nil values elegantly. Please note the more important thing to notice here is the relative difference in benchmark scores, the actual ns/op,B/op,allocs/op accounts for running through over 80 possible test cases, including some not-ideal situations.

The choice of libraries in the benchmark are just a selection of libraries that could be used in a similar manner to this one, i.e. serializing in some manner.

goos: linux
goarch: amd64
pkg: codeberg.org/gruf/go-mangler
cpu: 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
BenchmarkMangle
BenchmarkMangle-8                         533011              2003 ns/op            1168 B/op        120 allocs/op
BenchmarkMangleKnown
BenchmarkMangleKnown-8                    817060              1458 ns/op            1168 B/op        120 allocs/op
BenchmarkJSON
BenchmarkJSON-8                           188637              5899 ns/op            4211 B/op        142 allocs/op
BenchmarkFmt
BenchmarkFmt-8                            162735              7053 ns/op            2257 B/op        161 allocs/op
BenchmarkFxmackerCbor
BenchmarkFxmackerCbor-8                   362403              3336 ns/op            1496 B/op        122 allocs/op
BenchmarkMitchellhHashStructure
BenchmarkMitchellhHashStructure-8         113982             10079 ns/op            8443 B/op        961 allocs/op
BenchmarkCnfStructhash
BenchmarkCnfStructhash-8                    7162            167613 ns/op          288619 B/op       5841 allocs/op
PASS
ok      codeberg.org/gruf/go-mangler    11.352s