Skip to content

Conversation

ddzrc
Copy link

@ddzrc ddzrc commented Dec 8, 2022

before optimization benchmark test:

BenchmarkDecodeJsoniterStructMedium-4 195046 6399 ns/op
384 B/op 41 allocs/op
test by: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go

after optimization benchmark test:

BenchmarkDecodeJsoniterStructMedium-4 219428 4998 ns/op
32 B/op 2 allocs/op
test by: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go

@kz-sher
Copy link

kz-sher commented Mar 15, 2023

There will be a rare case to consider here: what if the input bytes will further get mutated?

In this case, the output string will be changed since they shared the same underlying memory address.

import ( "fmt"	jsoniter "github.com/json-iterator/go" ) func main() { var i1 = []byte(`"a"`) var i2 = []byte(`"b"`) var s1 string var s2 string jsoniter.Unmarshal(i1, &s1) jsoniter.Unmarshal(i2, &s2) i1[1] = 98 fmt.Println(s1, s2) // expect a b, got b b }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants