- Notifications
You must be signed in to change notification settings - Fork 191
Closed
Description
Greetings From https://github.com/prebid/prebid-server
We use json-patch in our project and observed a performance difference when we upgraded to v5 from an older version. This is a high scale application which is particularly sensitive to memory allocations. I turned the MergePatch example in the readme to a benchmark test and found the following results on the 5.2.0 and 5.1.0 version branches with Go 1.16:
func BenchmarkMergePatch(b *testing.B) { original := []byte(`{"name": "John", "age": 24, "height": 3.21}`) target := []byte(`{"name": "Jane", "age": 24}`) alternative := []byte(`{"name": "Tina", "age": 28, "height": 3.75}`) patch, err := CreateMergePatch(original, target) if err != nil { panic(err) } for n := 0; n < b.N; n++ { MergePatch(alternative, patch) } } v5.2.0 BenchmarkMergePatch-12 85310 14823 ns/op 6454 B/op 154 allocs/op v5.1.0 BenchmarkMergePatch-12 216194 6405 ns/op 2634 B/op 56 allocs/op v5.2.0+ is using significantly more memory in terms of bytes and allocations. I am curious if this is a known change or perhaps we need to modify our calls to optimize for lower memory usage?
Thank you.
Metadata
Metadata
Assignees
Labels
No labels