benchmark

package module
v0.0.0-...-343348a Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

README

Benchmark for JSON Pointer (RFC 6901) implementations for Go

Tested implementations

Results

2026-09-22 (go1.27.0 linux/amd64)

Versions tested are in go.mod.

Get
Impl speed allocs bytes allocs count
Jeffail/gabs/v2 246.7 ns/op 165 B/op 10 allocs/op
chanced/jsonpointer 601.2 ns/op 165 B/op 13 allocs/op
crhntr/jsonschema/jsonptr 487.1 ns/op 80 B/op 6 allocs/op
dolmen-go/jsonptr 60.93 ns/op 16 B/op 1 allocs/op
dustin/go-jsonpointer 84.24 ns/op 48 B/op 1 allocs/op
go-openapi/jsonpointer 398.0 ns/op 277 B/op 15 allocs/op
json-validate/json-pointer-go 145.4 ns/op 80 B/op 2 allocs/op
kaptinlin/jsonpointer 136.6 ns/op 96 B/op 2 allocs/op
lestrrat-go/jspointer 282.1 ns/op 320 B/op 9 allocs/op
mickep76/jsonptr 151.9 ns/op 64 B/op 1 allocs/op
oas3/jsonpointer 180.8 ns/op 144 B/op 3 allocs/op
qri-io/jsonpointer 128.9 ns/op 48 B/op 1 allocs/op
rnd42/go-jsonpointer 213.6 ns/op 129 B/op 3 allocs/op
twindagger/jsonptr 169.3 ns/op 136 B/op 3 allocs/op
xeipuuv/gojsonpointer 174.3 ns/op 144 B/op 3 allocs/op
yukithm/json2csv/jsonpointer 445.1 ns/op 317 B/op 17 allocs/op
GetRawBytes
Impl speed allocs bytes allocs count
Jeffail/gabs/v2 1951 ns/op 1099 B/op 30 allocs/op
crhntr/jsonschema/jsonptr 1732 ns/op 1248 B/op 20 allocs/op
dolmen-go/jsonptr 1216 ns/op 712 B/op 21 allocs/op
dustin/go-jsonpointer 784.0 ns/op 552 B/op 13 allocs/op
Parse "/definitions/Location"
Impl speed allocs bytes allocs count
chanced/jsonpointer 27.01 ns/op 16 B/op 1 allocs/op
crhntr/jsonschema/jsonptr 37.67 ns/op 16 B/op 1 allocs/op
dolmen-go/jsonptr 53.95 ns/op 56 B/op 2 allocs/op
encoding/json/jsontext 34.92 ns/op 16 B/op 1 allocs/op
go-openapi/jsonpointer 88.62 ns/op 104 B/op 3 allocs/op
json-validate/json-pointer-go 109.6 ns/op 72 B/op 2 allocs/op
kaptinlin/jsonpointer 97.58 ns/op 88 B/op 3 allocs/op
lestrrat-go/jspointer 157.3 ns/op 184 B/op 4 allocs/op
oas3/jsonpointer 47.82 ns/op 56 B/op 2 allocs/op
qri-io/jsonpointer 102.8 ns/op 56 B/op 2 allocs/op
rnd42/go-jsonpointer 179.8 ns/op 121 B/op 3 allocs/op
twindagger/jsonptr 130.4 ns/op 104 B/op 3 allocs/op
xeipuuv/gojsonpointer 48.91 ns/op 56 B/op 2 allocs/op
yukithm/json2csv/jsonpointer 202.8 ns/op 184 B/op 9 allocs/op
Parse "/path/\~1home\~1dolmen"
Impl speed allocs bytes allocs count
chanced/jsonpointer 31.92 ns/op 16 B/op 1 allocs/op
crhntr/jsonschema/jsonptr 35.78 ns/op 16 B/op 1 allocs/op
dolmen-go/jsonptr 100.1 ns/op 72 B/op 3 allocs/op
encoding/json/jsontext 38.09 ns/op 16 B/op 1 allocs/op
go-openapi/jsonpointer 85.11 ns/op 104 B/op 3 allocs/op
json-validate/json-pointer-go 166.0 ns/op 88 B/op 3 allocs/op
kaptinlin/jsonpointer 135.8 ns/op 104 B/op 4 allocs/op
lestrrat-go/jspointer 158.0 ns/op 184 B/op 4 allocs/op
oas3/jsonpointer 48.19 ns/op 56 B/op 2 allocs/op
qri-io/jsonpointer 164.0 ns/op 72 B/op 3 allocs/op
rnd42/go-jsonpointer 300.4 ns/op 137 B/op 4 allocs/op
twindagger/jsonptr 185.8 ns/op 120 B/op 4 allocs/op
xeipuuv/gojsonpointer 48.11 ns/op 56 B/op 2 allocs/op
yukithm/json2csv/jsonpointer 238.2 ns/op 173 B/op 9 allocs/op
Parse "/path/\~0\~1dolmen"
Impl speed allocs bytes allocs count
chanced/jsonpointer 31.98 ns/op 16 B/op 1 allocs/op
crhntr/jsonschema/jsonptr 35.92 ns/op 16 B/op 1 allocs/op
dolmen-go/jsonptr 96.25 ns/op 64 B/op 3 allocs/op
encoding/json/jsontext 43.69 ns/op 16 B/op 1 allocs/op
go-openapi/jsonpointer 92.99 ns/op 104 B/op 3 allocs/op
json-validate/json-pointer-go 226.6 ns/op 96 B/op 4 allocs/op
kaptinlin/jsonpointer 148.7 ns/op 104 B/op 4 allocs/op
lestrrat-go/jspointer 147.3 ns/op 176 B/op 4 allocs/op
oas3/jsonpointer 52.59 ns/op 56 B/op 2 allocs/op
qri-io/jsonpointer 200.5 ns/op 80 B/op 4 allocs/op
rnd42/go-jsonpointer 342.0 ns/op 137 B/op 5 allocs/op
twindagger/jsonptr 221.5 ns/op 128 B/op 5 allocs/op
xeipuuv/gojsonpointer 47.65 ns/op 56 B/op 2 allocs/op
yukithm/json2csv/jsonpointer 287.5 ns/op 168 B/op 9 allocs/op
BackToString "/definitions/Location"
Impl speed allocs bytes allocs count
chanced/jsonpointer 4.294 ns/op 0 B/op 0 allocs/op
crhntr/jsonschema/jsonptr 4.419 ns/op 0 B/op 0 allocs/op
dolmen-go/jsonptr 66.28 ns/op 56 B/op 2 allocs/op
encoding/json/jsontext 4.345 ns/op 0 B/op 0 allocs/op
go-openapi/jsonpointer 68.76 ns/op 48 B/op 2 allocs/op
json-validate/json-pointer-go 161.8 ns/op 64 B/op 3 allocs/op
kaptinlin/jsonpointer 77.24 ns/op 24 B/op 1 allocs/op
lestrrat-go/jspointer 4.178 ns/op 0 B/op 0 allocs/op
oas3/jsonpointer 114.8 ns/op 64 B/op 3 allocs/op
qri-io/jsonpointer 108.7 ns/op 40 B/op 2 allocs/op
rnd42/go-jsonpointer 3.962 ns/op 0 B/op 0 allocs/op
twindagger/jsonptr 163.9 ns/op 64 B/op 3 allocs/op
xeipuuv/gojsonpointer 66.95 ns/op 48 B/op 2 allocs/op
yukithm/json2csv/jsonpointer 152.4 ns/op 112 B/op 4 allocs/op
BackToString "/path/\~1home\~1dolmen"
Impl speed allocs bytes allocs count
chanced/jsonpointer 4.018 ns/op 0 B/op 0 allocs/op
crhntr/jsonschema/jsonptr 3.951 ns/op 0 B/op 0 allocs/op
dolmen-go/jsonptr 83.82 ns/op 48 B/op 2 allocs/op
encoding/json/jsontext 3.947 ns/op 0 B/op 0 allocs/op
go-openapi/jsonpointer 67.38 ns/op 48 B/op 2 allocs/op
json-validate/json-pointer-go 195.8 ns/op 80 B/op 4 allocs/op
kaptinlin/jsonpointer 120.3 ns/op 48 B/op 2 allocs/op
lestrrat-go/jspointer 4.090 ns/op 0 B/op 0 allocs/op
oas3/jsonpointer 111.7 ns/op 64 B/op 3 allocs/op
qri-io/jsonpointer 148.0 ns/op 45 B/op 3 allocs/op
rnd42/go-jsonpointer 3.991 ns/op 0 B/op 0 allocs/op
twindagger/jsonptr 198.5 ns/op 80 B/op 4 allocs/op
xeipuuv/gojsonpointer 67.30 ns/op 48 B/op 2 allocs/op
yukithm/json2csv/jsonpointer 222.0 ns/op 144 B/op 6 allocs/op
BackToString "/path/\~0\~1dolmen"
Impl speed allocs bytes allocs count
chanced/jsonpointer 3.895 ns/op 0 B/op 0 allocs/op
crhntr/jsonschema/jsonptr 3.866 ns/op 0 B/op 0 allocs/op
dolmen-go/jsonptr 53.26 ns/op 16 B/op 1 allocs/op
encoding/json/jsontext 3.912 ns/op 0 B/op 0 allocs/op
go-openapi/jsonpointer 64.16 ns/op 32 B/op 2 allocs/op
json-validate/json-pointer-go 215.1 ns/op 80 B/op 5 allocs/op
kaptinlin/jsonpointer 102.7 ns/op 32 B/op 2 allocs/op
lestrrat-go/jspointer 4.229 ns/op 0 B/op 0 allocs/op
oas3/jsonpointer 111.8 ns/op 48 B/op 3 allocs/op
qri-io/jsonpointer 167.5 ns/op 53 B/op 4 allocs/op
rnd42/go-jsonpointer 3.784 ns/op 0 B/op 0 allocs/op
twindagger/jsonptr 209.4 ns/op 80 B/op 5 allocs/op
xeipuuv/gojsonpointer 63.93 ns/op 32 B/op 2 allocs/op
yukithm/json2csv/jsonpointer 198.3 ns/op 128 B/op 6 allocs/op
ParseAndBackToString "/definitions/Location"
Impl speed allocs bytes allocs count
chanced/jsonpointer 30.18 ns/op 16 B/op 1 allocs/op
crhntr/jsonschema/jsonptr 41.57 ns/op 16 B/op 1 allocs/op
dolmen-go/jsonptr 121.6 ns/op 112 B/op 4 allocs/op
encoding/json/jsontext 39.63 ns/op 16 B/op 1 allocs/op
go-openapi/jsonpointer 164.6 ns/op 152 B/op 5 allocs/op
json-validate/json-pointer-go 274.6 ns/op 136 B/op 5 allocs/op
kaptinlin/jsonpointer 176.8 ns/op 112 B/op 4 allocs/op
lestrrat-go/jspointer 153.8 ns/op 184 B/op 4 allocs/op
oas3/jsonpointer 163.4 ns/op 120 B/op 5 allocs/op
qri-io/jsonpointer 215.0 ns/op 96 B/op 4 allocs/op
rnd42/go-jsonpointer 182.2 ns/op 121 B/op 3 allocs/op
twindagger/jsonptr 302.2 ns/op 168 B/op 6 allocs/op
xeipuuv/gojsonpointer 116.7 ns/op 104 B/op 4 allocs/op
yukithm/json2csv/jsonpointer 391.3 ns/op 296 B/op 13 allocs/op
ParseAndBackToString "/path/\~1home\~1dolmen"
Impl speed allocs bytes allocs count
chanced/jsonpointer 34.93 ns/op 16 B/op 1 allocs/op
crhntr/jsonschema/jsonptr 39.48 ns/op 16 B/op 1 allocs/op
dolmen-go/jsonptr 200.0 ns/op 120 B/op 5 allocs/op
encoding/json/jsontext 43.24 ns/op 16 B/op 1 allocs/op
go-openapi/jsonpointer 170.4 ns/op 152 B/op 5 allocs/op
json-validate/json-pointer-go 397.7 ns/op 168 B/op 7 allocs/op
kaptinlin/jsonpointer 287.4 ns/op 152 B/op 6 allocs/op
lestrrat-go/jspointer 159.5 ns/op 184 B/op 4 allocs/op
oas3/jsonpointer 179.1 ns/op 120 B/op 5 allocs/op
qri-io/jsonpointer 342.3 ns/op 117 B/op 6 allocs/op
rnd42/go-jsonpointer 323.3 ns/op 137 B/op 4 allocs/op
twindagger/jsonptr 427.8 ns/op 200 B/op 8 allocs/op
xeipuuv/gojsonpointer 119.5 ns/op 104 B/op 4 allocs/op
yukithm/json2csv/jsonpointer 520.2 ns/op 317 B/op 15 allocs/op
ParseAndBackToString "/path/\~0\~1dolmen"
Impl speed allocs bytes allocs count
chanced/jsonpointer 32.56 ns/op 16 B/op 1 allocs/op
crhntr/jsonschema/jsonptr 36.36 ns/op 16 B/op 1 allocs/op
dolmen-go/jsonptr 167.6 ns/op 80 B/op 4 allocs/op
encoding/json/jsontext 41.67 ns/op 16 B/op 1 allocs/op
go-openapi/jsonpointer 166.3 ns/op 136 B/op 5 allocs/op
json-validate/json-pointer-go 441.0 ns/op 176 B/op 9 allocs/op
kaptinlin/jsonpointer 248.1 ns/op 136 B/op 6 allocs/op
lestrrat-go/jspointer 150.9 ns/op 176 B/op 4 allocs/op
oas3/jsonpointer 168.3 ns/op 104 B/op 5 allocs/op
qri-io/jsonpointer 376.3 ns/op 136 B/op 8 allocs/op
rnd42/go-jsonpointer 340.3 ns/op 137 B/op 5 allocs/op
twindagger/jsonptr 489.5 ns/op 208 B/op 10 allocs/op
xeipuuv/gojsonpointer 114.7 ns/op 88 B/op 4 allocs/op
yukithm/json2csv/jsonpointer 465.5 ns/op 296 B/op 15 allocs/op

Run

go test -bench . -benchmem | tee bench.txt
perl ./bench-to-table.pl < bench.txt > bench.md

License

Copyright 2016-2021 Olivier Mengué

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChancedJsonPointer

type ChancedJsonPointer struct{}

func (ChancedJsonPointer) Get

func (ChancedJsonPointer) Get(doc any, pointer string) (out any, err error)

func (ChancedJsonPointer) Parse

func (ChancedJsonPointer) Parse(pointer string) (Stringer, error)

func (ChancedJsonPointer) Set

func (ChancedJsonPointer) Set(pdoc *any, pointer string, value any) error

type CrhntrJsonSchemaJsonPtr

type CrhntrJsonSchemaJsonPtr struct{}

func (CrhntrJsonSchemaJsonPtr) Get

func (CrhntrJsonSchemaJsonPtr) Get(doc any, pointer string) (any, error)

func (CrhntrJsonSchemaJsonPtr) GetRawBytes

func (CrhntrJsonSchemaJsonPtr) GetRawBytes(doc []byte, pointer string) (any, error)

func (CrhntrJsonSchemaJsonPtr) Parse

func (CrhntrJsonSchemaJsonPtr) Parse(pointer string) (Stringer, error)

type DolmenGoJsonPtr

type DolmenGoJsonPtr struct{}

func (DolmenGoJsonPtr) Get

func (DolmenGoJsonPtr) Get(doc any, pointer string) (any, error)

func (DolmenGoJsonPtr) GetRawBytes

func (DolmenGoJsonPtr) GetRawBytes(doc []byte, pointer string) (any, error)

func (DolmenGoJsonPtr) Parse

func (DolmenGoJsonPtr) Parse(pointer string) (Stringer, error)

func (DolmenGoJsonPtr) Set

func (DolmenGoJsonPtr) Set(pdoc *any, pointer string, value any) error

type DustinGoJsonPointer

type DustinGoJsonPointer struct{}

func (DustinGoJsonPointer) Get

func (DustinGoJsonPointer) Get(doc any, pointer string) (any, error)

func (DustinGoJsonPointer) GetRawBytes

func (DustinGoJsonPointer) GetRawBytes(doc []byte, pointer string) (any, error)

type GoOpenAPIJSONPointer

type GoOpenAPIJSONPointer struct{}

func (GoOpenAPIJSONPointer) Get

func (GoOpenAPIJSONPointer) Get(doc any, pointer string) (any, error)

func (GoOpenAPIJSONPointer) Parse

func (GoOpenAPIJSONPointer) Parse(pointer string) (Stringer, error)

func (GoOpenAPIJSONPointer) Set

func (GoOpenAPIJSONPointer) Set(document *any, pointer string, value any) error

type JeffailGabs

type JeffailGabs struct{}

func (JeffailGabs) Get

func (JeffailGabs) Get(doc any, pointer string) (any, error)

func (JeffailGabs) GetRawBytes

func (JeffailGabs) GetRawBytes(doc []byte, pointer string) (any, error)

func (JeffailGabs) Set

func (JeffailGabs) Set(pdoc *any, pointer string, value any) error

type JsonValidateJsonPointerGo

type JsonValidateJsonPointerGo struct{}

func (JsonValidateJsonPointerGo) Get

func (JsonValidateJsonPointerGo) Get(doc any, pointer string) (any, error)

func (JsonValidateJsonPointerGo) Parse

func (JsonValidateJsonPointerGo) Parse(pointer string) (Stringer, error)

type KaptinlinJSONPointer

type KaptinlinJSONPointer struct{}

func (KaptinlinJSONPointer) Get

func (KaptinlinJSONPointer) Get(doc any, pointer string) (any, error)

func (KaptinlinJSONPointer) Parse

func (KaptinlinJSONPointer) Parse(pointer string) (Stringer, error)

type LestrratGoJsPointer

type LestrratGoJsPointer struct{}

func (LestrratGoJsPointer) Get

func (LestrratGoJsPointer) Get(doc any, pointer string) (any, error)

func (LestrratGoJsPointer) Parse

func (LestrratGoJsPointer) Parse(pointer string) (Stringer, error)

func (LestrratGoJsPointer) Set

func (LestrratGoJsPointer) Set(pdoc *any, pointer string, value any) error

type Mickep76JsonPtr

type Mickep76JsonPtr struct{}

func (Mickep76JsonPtr) Get

func (Mickep76JsonPtr) Get(doc any, pointer string) (any, error)

type OAS3JSONPointer

type OAS3JSONPointer struct{}

func (OAS3JSONPointer) Get

func (OAS3JSONPointer) Get(doc any, pointer string) (any, error)

func (OAS3JSONPointer) Parse

func (OAS3JSONPointer) Parse(pointer string) (Stringer, error)

func (OAS3JSONPointer) Set

func (OAS3JSONPointer) Set(document *any, pointer string, value any) error

type QriIoJSONPointer

type QriIoJSONPointer struct{}

func (QriIoJSONPointer) Get

func (QriIoJSONPointer) Get(doc any, pointer string) (any, error)

func (QriIoJSONPointer) Parse

func (QriIoJSONPointer) Parse(pointer string) (Stringer, error)

type Rnd42JSONPointer

type Rnd42JSONPointer struct{}

func (Rnd42JSONPointer) Get

func (Rnd42JSONPointer) Get(doc any, pointer string) (any, error)

func (Rnd42JSONPointer) Parse

func (Rnd42JSONPointer) Parse(pointer string) (Stringer, error)

func (Rnd42JSONPointer) Set

func (Rnd42JSONPointer) Set(pdoc *any, pointer string, value any) error

type StdJsonTextPtr

type StdJsonTextPtr struct{}

func (StdJsonTextPtr) Get

func (StdJsonTextPtr) Get(doc any, pointer string) (any, error)

func (StdJsonTextPtr) Parse

func (StdJsonTextPtr) Parse(pointer string) (Stringer, error)

type Stringer

type Stringer interface {
	String() string
}

same as fmt.Stringer

type TwindaggerJSONPtr

type TwindaggerJSONPtr struct{}

func (TwindaggerJSONPtr) Get

func (TwindaggerJSONPtr) Get(doc any, pointer string) (any, error)

func (TwindaggerJSONPtr) Parse

func (TwindaggerJSONPtr) Parse(pointer string) (Stringer, error)

func (TwindaggerJSONPtr) Set

func (TwindaggerJSONPtr) Set(pdoc *any, pointer string, value any) error

type XeipuuvGoJsonPointer

type XeipuuvGoJsonPointer struct{}

func (XeipuuvGoJsonPointer) Get

func (XeipuuvGoJsonPointer) Get(doc any, pointer string) (any, error)

func (XeipuuvGoJsonPointer) Parse

func (XeipuuvGoJsonPointer) Parse(pointer string) (Stringer, error)

func (XeipuuvGoJsonPointer) Set

func (XeipuuvGoJsonPointer) Set(pdoc *any, pointer string, value any) error

type YukithmJSON2CSVJsonPointer

type YukithmJSON2CSVJsonPointer struct{}

func (YukithmJSON2CSVJsonPointer) Get

func (YukithmJSON2CSVJsonPointer) Get(doc any, pointer string) (any, error)

func (YukithmJSON2CSVJsonPointer) Parse

func (YukithmJSON2CSVJsonPointer) Parse(pointer string) (Stringer, error)

Jump to

Keyboard shortcuts

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