Open frederikhors opened 3 years ago
Why is asaskevich/govalidator so much slower in the below code? Am I wrong?
asaskevich/govalidator
package main import ( "fmt" "time" "github.com/asaskevich/govalidator" "github.com/go-playground/validator/v10" ) // User contains user information type User struct { FirstName string `valid:"required" validate:"required"` LastName string `valid:"required" validate:"required"` Age int32 `valid:"range(0|130)" validate:"gte=0,lte=130"` Email string `valid:"required,email" validate:"required,email"` Street string `valid:"required" validate:"required"` City string `valid:"required" validate:"required"` Planet string `valid:"required" validate:"required"` Phone string `valid:"required" validate:"required"` } var validate *validator.Validate const iterations = 10000 func main() { validate = validator.New() user := &User{ FirstName: "Badger", LastName: "Smith", Age: 80, City: "string", Email: "Badger.Smith@gmail.com", Street: "Eavesdown Docks", Planet: "Persphone", Phone: "none", } println("govalidator.Struct (asaskevich):") before := time.Now() for i := 0; i < iterations; i++ { govalidator.ValidateStruct(user) } fmt.Println(time.Since(before)) println("validate.Struct (go-playground):") before = time.Now() for i := 0; i < iterations; i++ { validate.Struct(user) } fmt.Println(time.Since(before)) }
Result:
govalidator.Struct (asaskevich): 135.03ms validate.Struct (go-playground): 17.9687ms
Hello guys! I forked this package cause owner disappeared. Hope, he will be back, but it would be easier to merge these changes back if he is back Link to my repo: create issue there and we'll discuss it.
Why is
asaskevich/govalidator
so much slower in the below code? Am I wrong?Result: