diff --git a/structtags/README.md b/structtags/README.md index 23ce5ed..5c87740 100644 --- a/structtags/README.md +++ b/structtags/README.md @@ -2,15 +2,14 @@ Ускорьте функцию `Unpack()`. -Ваша функция должна работать быстрее, чем бейзлайн + 20%. - ``` goos: linux goarch: amd64 pkg: gitlab.com/slon/shad-go/structtags cpu: Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz -BenchmarkUnpacker/user-4 4269022 275.0 ns/op -BenchmarkUnpacker/user+good+order-4 732264 1481 ns/op +BenchmarkUnpacker/user-4 4158832 268.2 ns/op 0 B/op 0 allocs/op +BenchmarkUnpacker/good-4 1000000 1198 ns/op 220 B/op 6 allocs/op +BenchmarkUnpacker/order-4 1260784 1162 ns/op 282 B/op 6 allocs/op PASS ``` diff --git a/structtags/structtags_test.go b/structtags/structtags_test.go index 9c0125c..1c53598 100644 --- a/structtags/structtags_test.go +++ b/structtags/structtags_test.go @@ -138,16 +138,27 @@ func BenchmarkUnpacker(b *testing.B) { order := &Order{} b.Run("user", func(b *testing.B) { + b.ReportAllocs() + for i := 0; i < b.N; i++ { _ = Unpack(userRequest, user) } }) - b.Run("user+good+order", func(b *testing.B) { + b.Run("good", func(b *testing.B) { + b.ReportAllocs() + for i := 0; i < b.N; i++ { - _ = Unpack(userRequest, user) _ = Unpack(goodRequest, good) _ = Unpack(orderRequest, order) } }) + + b.Run("order", func(b *testing.B) { + b.ReportAllocs() + + for i := 0; i < b.N; i++ { + _ = Unpack(orderRequest, order) + } + }) }