package validator import "testing" func BenchmarkValidateField(b *testing.B) { for n := 0; n < b.N; n++ { validate.Field("1", "len=1") } } func BenchmarkValidateStructSimple(b *testing.B) { type Foo struct { StringValue string `validate:"min=5,max=10"` IntValue int `validate:"min=5,max=10"` } validFoo := &Foo{StringValue: "Foobar", IntValue: 7} invalidFoo := &Foo{StringValue: "Fo", IntValue: 3} for n := 0; n < b.N; n++ { validate.Struct(validFoo) validate.Struct(invalidFoo) } } func BenchmarkTemplateParallelSimple(b *testing.B) { type Foo struct { StringValue string `validate:"min=5,max=10"` IntValue int `validate:"min=5,max=10"` } validFoo := &Foo{StringValue: "Foobar", IntValue: 7} invalidFoo := &Foo{StringValue: "Fo", IntValue: 3} b.RunParallel(func(pb *testing.PB) { for pb.Next() { validate.Struct(validFoo) validate.Struct(invalidFoo) } }) } // func BenchmarkValidateStructLarge(b *testing.B) { // tFail := &TestString{ // Required: "", // Len: "", // Min: "", // Max: "12345678901", // MinMax: "", // Lt: "0123456789", // Lte: "01234567890", // Gt: "1", // Gte: "1", // OmitEmpty: "12345678901", // Sub: &SubTest{ // Test: "", // }, // Anonymous: struct { // A string `validate:"required"` // }{ // A: "", // }, // Iface: &Impl{ // F: "12", // }, // } // tSuccess := &TestString{ // Required: "Required", // Len: "length==10", // Min: "min=1", // Max: "1234567890", // MinMax: "12345", // Lt: "012345678", // Lte: "0123456789", // Gt: "01234567890", // Gte: "0123456789", // OmitEmpty: "", // Sub: &SubTest{ // Test: "1", // }, // SubIgnore: &SubTest{ // Test: "", // }, // Anonymous: struct { // A string `validate:"required"` // }{ // A: "1", // }, // Iface: &Impl{ // F: "123", // }, // } // for n := 0; n < b.N; n++ { // validate.Struct(tSuccess) // validate.Struct(tFail) // } // } // func BenchmarkTemplateParallelLarge(b *testing.B) { // tFail := &TestString{ // Required: "", // Len: "", // Min: "", // Max: "12345678901", // MinMax: "", // Lt: "0123456789", // Lte: "01234567890", // Gt: "1", // Gte: "1", // OmitEmpty: "12345678901", // Sub: &SubTest{ // Test: "", // }, // Anonymous: struct { // A string `validate:"required"` // }{ // A: "", // }, // Iface: &Impl{ // F: "12", // }, // } // tSuccess := &TestString{ // Required: "Required", // Len: "length==10", // Min: "min=1", // Max: "1234567890", // MinMax: "12345", // Lt: "012345678", // Lte: "0123456789", // Gt: "01234567890", // Gte: "0123456789", // OmitEmpty: "", // Sub: &SubTest{ // Test: "1", // }, // SubIgnore: &SubTest{ // Test: "", // }, // Anonymous: struct { // A string `validate:"required"` // }{ // A: "1", // }, // Iface: &Impl{ // F: "123", // }, // } // b.RunParallel(func(pb *testing.PB) { // for pb.Next() { // validate.Struct(tSuccess) // validate.Struct(tFail) // } // }) // }