diff --git a/benchmark/codec_test.go b/benchmark/codec_test.go index ab7acd6..5c77072 100644 --- a/benchmark/codec_test.go +++ b/benchmark/codec_test.go @@ -150,164 +150,130 @@ func BenchmarkCodec_Marshal_L_Reuse(b *testing.B) { b.SetBytes(l) } -/* +func BenchmarkCodec_Marshal_S_Parallel(b *testing.B) { + var l int64 -func BenchmarkCodec_Marshal_RequestFF(b *testing.B) { - var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&largeStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - } - b.SetBytes(l) -} - -func BenchmarkCodec_Marshal_SmallRequestFF(b *testing.B) { - var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&smallStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - } - b.SetBytes(l) -} - -func BenchmarkCodec_Marshal_RequestFFPool(b *testing.B) { - var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&largeStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - ffjson.Pool(data) - } - b.SetBytes(l) -} - -func BenchmarkCodec_Marshal_XLRequestFF(b *testing.B) { - var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&xlStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - } - b.SetBytes(l) -} - -func BenchmarkCodec_Marshal_XLRequestFFPool(b *testing.B) { - var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&xlStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - ffjson.Pool(data) - } - b.SetBytes(l) -} - -func BenchmarkCodec_Marshal_XLRequestFFPoolParallel(b *testing.B) { - var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&xlStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - ffjson.Pool(data) - } - b.SetBytes(l) -} -func BenchmarkCodec_Marshal_RequestFFPoolParallel(b *testing.B) { - var l int64 b.RunParallel(func(pb *testing.PB) { + var out []byte + + var h codec.Handle = new(codec.JsonHandle) + enc := codec.NewEncoderBytes(&out, h) + for pb.Next() { - data, err := ffjson.MarshalFast(&largeStructData) - if err != nil { + enc.ResetBytes(&out) + if err := enc.Encode(&smallStructData); err != nil { b.Error(err) } - l = int64(len(data)) - ffjson.Pool(data) + l = int64(len(out)) + out = nil + } + }) + + b.SetBytes(l) +} + +func BenchmarkCodec_Marshal_M_Parallel(b *testing.B) { + var l int64 + + b.RunParallel(func(pb *testing.PB) { + var h codec.Handle = new(codec.JsonHandle) + + var out []byte + enc := codec.NewEncoderBytes(&out, h) + + for pb.Next() { + enc.ResetBytes(&out) + if err := enc.Encode(&largeStructData); err != nil { + b.Error(err) + } + l = int64(len(out)) + out = nil } }) b.SetBytes(l) } -func BenchmarkCodec_Marshal_SmallRequestPoolFF(b *testing.B) { +func BenchmarkCodec_Marshal_L_Parallel(b *testing.B) { var l int64 - for i := 0; i < b.N; i++ { - data, err := ffjson.MarshalFast(&smallStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - ffjson.Pool(data) - } - b.SetBytes(l) -} -func BenchmarkCodec_Marshal_SmallRequestPoolFFParallel(b *testing.B) { - var l int64 b.RunParallel(func(pb *testing.PB) { + var h codec.Handle = new(codec.JsonHandle) + + var out []byte + enc := codec.NewEncoderBytes(&out, h) + for pb.Next() { - data, err := ffjson.MarshalFast(&smallStructData) - if err != nil { + enc.ResetBytes(&out) + if err := enc.Encode(&xlStructData); err != nil { b.Error(err) } - l = int64(len(data)) - ffjson.Pool(data) + l = int64(len(out)) + out = nil } }) b.SetBytes(l) } -func BenchmarkCodec_Marshal_SmallRequestFFParallel(b *testing.B) { +func BenchmarkCodec_Marshal_S_Parallel_Reuse(b *testing.B) { var l int64 + b.RunParallel(func(pb *testing.PB) { + var out []byte + + var h codec.Handle = new(codec.JsonHandle) + enc := codec.NewEncoderBytes(&out, h) + for pb.Next() { - data, err := ffjson.MarshalFast(&smallStructData) - if err != nil { + enc.ResetBytes(&out) + if err := enc.Encode(&smallStructData); err != nil { b.Error(err) } - l = int64(len(data)) + l = int64(len(out)) + out = out[:0] + } + }) + + b.SetBytes(l) +} + +func BenchmarkCodec_Marshal_M_Parallel_Reuse(b *testing.B) { + var l int64 + + b.RunParallel(func(pb *testing.PB) { + var h codec.Handle = new(codec.JsonHandle) + + var out []byte + enc := codec.NewEncoderBytes(&out, h) + + for pb.Next() { + enc.ResetBytes(&out) + if err := enc.Encode(&largeStructData); err != nil { + b.Error(err) + } + l = int64(len(out)) + out = out[:0] } }) b.SetBytes(l) } -func BenchmarkCodec_Marshal_RequestFFParallel(b *testing.B) { +func BenchmarkCodec_Marshal_L_Parallel_Reuse(b *testing.B) { var l int64 - b.RunParallel(func(pb *testing.PB) { - for pb.Next() { - data, err := ffjson.MarshalFast(&largeStructData) - if err != nil { - b.Error(err) - } - l = int64(len(data)) - } - }) - b.SetBytes(l) -} -func BenchmarkCodec_Marshal_XLRequestFFParallel(b *testing.B) { - var l int64 b.RunParallel(func(pb *testing.PB) { + var h codec.Handle = new(codec.JsonHandle) + + var out []byte + enc := codec.NewEncoderBytes(&out, h) + for pb.Next() { - data, err := ffjson.MarshalFast(&xlStructData) - if err != nil { + enc.ResetBytes(&out) + if err := enc.Encode(&xlStructData); err != nil { b.Error(err) } - l = int64(len(data)) + l = int64(len(out)) + out = out[:0] } }) b.SetBytes(l) } -*/