final touches + README updates

fresh test of old vs new benchmarks

```go

benchmark                                               old ns/op     new ns/op     delta
BenchmarkFieldSuccess-8                                 155           118           -23.87%
BenchmarkFieldFailure-8                                 777           758           -2.45%
BenchmarkFieldDiveSuccess-8                             2813          2471          -12.16%
BenchmarkFieldDiveFailure-8                             3544          3172          -10.50%
BenchmarkFieldCustomTypeSuccess-8                       328           300           -8.54%
BenchmarkFieldCustomTypeFailure-8                       748           775           +3.61%
BenchmarkFieldOrTagSuccess-8                            1169          1122          -4.02%
BenchmarkFieldOrTagFailure-8                            1205          1167          -3.15%
BenchmarkStructLevelValidationSuccess-8                 670           548           -18.21%
BenchmarkStructLevelValidationFailure-8                 1380          558           -59.57%
BenchmarkStructSimpleCustomTypeSuccess-8                889           623           -29.92%
BenchmarkStructSimpleCustomTypeFailure-8                1536          1381          -10.09%
BenchmarkStructPartialSuccess-8                         1194          1036          -13.23%
BenchmarkStructPartialFailure-8                         1869          1734          -7.22%
BenchmarkStructExceptSuccess-8                          949           888           -6.43%
BenchmarkStructExceptFailure-8                          1181          1036          -12.28%
BenchmarkStructSimpleCrossFieldSuccess-8                948           773           -18.46%
BenchmarkStructSimpleCrossFieldFailure-8                1708          1487          -12.94%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8     1608          1261          -21.58%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8     2320          2055          -11.42%
BenchmarkStructSimpleSuccess-8                          833           519           -37.70%
BenchmarkStructSimpleFailure-8                          1612          1429          -11.35%
BenchmarkStructSimpleSuccessParallel-8                  239           146           -38.91%
BenchmarkStructSimpleFailureParallel-8                  664           551           -17.02%
BenchmarkStructComplexSuccess-8                         5025          3269          -34.95%
BenchmarkStructComplexFailure-8                         10166         8436          -17.02%
BenchmarkStructComplexSuccessParallel-8                 1591          1024          -35.64%
BenchmarkStructComplexFailureParallel-8                 4306          3536          -17.88%

benchmark                                               old allocs     new allocs     delta
BenchmarkFieldSuccess-8                                 0              0              +0.00%
BenchmarkFieldFailure-8                                 4              4              +0.00%
BenchmarkFieldDiveSuccess-8                             27             28             +3.70%
BenchmarkFieldDiveFailure-8                             31             32             +3.23%
BenchmarkFieldCustomTypeSuccess-8                       2              2              +0.00%
BenchmarkFieldCustomTypeFailure-8                       4              4              +0.00%
BenchmarkFieldOrTagSuccess-8                            1              1              +0.00%
BenchmarkFieldOrTagFailure-8                            6              6              +0.00%
BenchmarkStructLevelValidationSuccess-8                 6              5              -16.67%
BenchmarkStructLevelValidationFailure-8                 11             5              -54.55%
BenchmarkStructSimpleCustomTypeSuccess-8                5              3              -40.00%
BenchmarkStructSimpleCustomTypeFailure-8                11             9              -18.18%
BenchmarkStructPartialSuccess-8                         10             9              -10.00%
BenchmarkStructPartialFailure-8                         15             14             -6.67%
BenchmarkStructExceptSuccess-8                          7              7              +0.00%
BenchmarkStructExceptFailure-8                          10             9              -10.00%
BenchmarkStructSimpleCrossFieldSuccess-8                6              4              -33.33%
BenchmarkStructSimpleCrossFieldFailure-8                11             9              -18.18%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8     10             7              -30.00%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8     15             12             -20.00%
BenchmarkStructSimpleSuccess-8                          3              1              -66.67%
BenchmarkStructSimpleFailure-8                          11             9              -18.18%
BenchmarkStructSimpleSuccessParallel-8                  3              1              -66.67%
BenchmarkStructSimpleFailureParallel-8                  11             9              -18.18%
BenchmarkStructComplexSuccess-8                         32             15             -53.12%
BenchmarkStructComplexFailure-8                         77             60             -22.08%
BenchmarkStructComplexSuccessParallel-8                 32             15             -53.12%
BenchmarkStructComplexFailureParallel-8                 77             60             -22.08%

benchmark                                               old bytes     new bytes     delta
BenchmarkFieldSuccess-8                                 0             0             +0.00%
BenchmarkFieldFailure-8                                 432           432           +0.00%
BenchmarkFieldDiveSuccess-8                             384           464           +20.83%
BenchmarkFieldDiveFailure-8                             816           896           +9.80%
BenchmarkFieldCustomTypeSuccess-8                       32            32            +0.00%
BenchmarkFieldCustomTypeFailure-8                       432           432           +0.00%
BenchmarkFieldOrTagSuccess-8                            4             4             +0.00%
BenchmarkFieldOrTagFailure-8                            448           448           +0.00%
BenchmarkStructLevelValidationSuccess-8                 168           160           -4.76%
BenchmarkStructLevelValidationFailure-8                 632           160           -74.68%
BenchmarkStructSimpleCustomTypeSuccess-8                56            36            -35.71%
BenchmarkStructSimpleCustomTypeFailure-8                656           640           -2.44%
BenchmarkStructPartialSuccess-8                         352           272           -22.73%
BenchmarkStructPartialFailure-8                         808           730           -9.65%
BenchmarkStructExceptSuccess-8                          314           250           -20.38%
BenchmarkStructExceptFailure-8                          352           272           -22.73%
BenchmarkStructSimpleCrossFieldSuccess-8                96            80            -16.67%
BenchmarkStructSimpleCrossFieldFailure-8                552           536           -2.90%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8     136           112           -17.65%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8     600           576           -4.00%
BenchmarkStructSimpleSuccess-8                          24            4             -83.33%
BenchmarkStructSimpleFailure-8                          656           640           -2.44%
BenchmarkStructSimpleSuccessParallel-8                  24            4             -83.33%
BenchmarkStructSimpleFailureParallel-8                  656           640           -2.44%
BenchmarkStructComplexSuccess-8                         392           244           -37.76%
BenchmarkStructComplexFailure-8                         3745          3609          -3.63%
BenchmarkStructComplexSuccessParallel-8                 392           244           -37.76%
BenchmarkStructComplexFailureParallel-8                 3745          3609          -3.63%

```
pull/252/head
joeybloggs 9 years ago
parent 80301d1184
commit 89d5a94084
  1. 59
      README.md
  2. 36
      validator_test.go

@ -2,7 +2,7 @@ Package validator
================
<img align="right" src="https://raw.githubusercontent.com/go-playground/validator/v8/logo.png">
[![Join the chat at https://gitter.im/bluesuncorp/validator](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/go-playground/validator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
![Project status](https://img.shields.io/badge/version-8.17.3-green.svg)
![Project status](https://img.shields.io/badge/version-8.18.0-green.svg)
[![Build Status](https://semaphoreci.com/api/v1/projects/ec20115f-ef1b-4c7d-9393-cc76aba74eb4/530054/badge.svg)](https://semaphoreci.com/joeybloggs/validator)
[![Coverage Status](https://coveralls.io/repos/go-playground/validator/badge.svg?branch=v8&service=github)](https://coveralls.io/github/go-playground/validator?branch=v8)
[![Go Report Card](https://goreportcard.com/badge/github.com/go-playground/validator)](https://goreportcard.com/report/github.com/go-playground/validator)
@ -310,36 +310,35 @@ Benchmarks
------
###### Run on MacBook Pro (Retina, 15-inch, Late 2013) 2.6 GHz Intel Core i7 16 GB 1600 MHz DDR3 using Go version go1.5.3 darwin/amd64
```go
go test -cpu=4 -bench=. -benchmem=true
PASS
BenchmarkFieldSuccess-4 10000000 167 ns/op 0 B/op 0 allocs/op
BenchmarkFieldFailure-4 2000000 701 ns/op 432 B/op 4 allocs/op
BenchmarkFieldDiveSuccess-4 500000 2937 ns/op 480 B/op 27 allocs/op
BenchmarkFieldDiveFailure-4 500000 3536 ns/op 912 B/op 31 allocs/op
BenchmarkFieldCustomTypeSuccess-4 5000000 341 ns/op 32 B/op 2 allocs/op
BenchmarkFieldCustomTypeFailure-4 2000000 679 ns/op 432 B/op 4 allocs/op
BenchmarkFieldOrTagSuccess-4 1000000 1157 ns/op 16 B/op 1 allocs/op
BenchmarkFieldOrTagFailure-4 1000000 1109 ns/op 464 B/op 6 allocs/op
BenchmarkStructLevelValidationSuccess-4 2000000 694 ns/op 176 B/op 6 allocs/op
BenchmarkStructLevelValidationFailure-4 1000000 1311 ns/op 640 B/op 11 allocs/op
BenchmarkStructSimpleCustomTypeSuccess-4 2000000 894 ns/op 80 B/op 5 allocs/op
BenchmarkStructSimpleCustomTypeFailure-4 1000000 1496 ns/op 688 B/op 11 allocs/op
BenchmarkStructPartialSuccess-4 1000000 1229 ns/op 384 B/op 10 allocs/op
BenchmarkStructPartialFailure-4 1000000 1838 ns/op 832 B/op 15 allocs/op
BenchmarkStructExceptSuccess-4 2000000 961 ns/op 336 B/op 7 allocs/op
BenchmarkStructExceptFailure-4 1000000 1218 ns/op 384 B/op 10 allocs/op
BenchmarkStructSimpleCrossFieldSuccess-4 2000000 954 ns/op 128 B/op 6 allocs/op
BenchmarkStructSimpleCrossFieldFailure-4 1000000 1569 ns/op 592 B/op 11 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccess-4 1000000 1588 ns/op 192 B/op 10 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailure-4 1000000 2217 ns/op 656 B/op 15 allocs/op
BenchmarkStructSimpleSuccess-4 2000000 925 ns/op 48 B/op 3 allocs/op
BenchmarkStructSimpleFailure-4 1000000 1650 ns/op 688 B/op 11 allocs/op
BenchmarkStructSimpleSuccessParallel-4 5000000 261 ns/op 48 B/op 3 allocs/op
BenchmarkStructSimpleFailureParallel-4 2000000 758 ns/op 688 B/op 11 allocs/op
BenchmarkStructComplexSuccess-4 300000 5868 ns/op 544 B/op 32 allocs/op
BenchmarkStructComplexFailure-4 200000 10767 ns/op 3912 B/op 77 allocs/op
BenchmarkStructComplexSuccessParallel-4 1000000 1559 ns/op 544 B/op 32 allocs/op
BenchmarkStructComplexFailureParallel-4 500000 3747 ns/op 3912 B/op 77 allocs
BenchmarkFieldSuccess-8 20000000 118 ns/op 0 B/op 0 allocs/op
BenchmarkFieldFailure-8 2000000 758 ns/op 432 B/op 4 allocs/op
BenchmarkFieldDiveSuccess-8 500000 2471 ns/op 464 B/op 28 allocs/op
BenchmarkFieldDiveFailure-8 500000 3172 ns/op 896 B/op 32 allocs/op
BenchmarkFieldCustomTypeSuccess-8 5000000 300 ns/op 32 B/op 2 allocs/op
BenchmarkFieldCustomTypeFailure-8 2000000 775 ns/op 432 B/op 4 allocs/op
BenchmarkFieldOrTagSuccess-8 1000000 1122 ns/op 4 B/op 1 allocs/op
BenchmarkFieldOrTagFailure-8 1000000 1167 ns/op 448 B/op 6 allocs/op
BenchmarkStructLevelValidationSuccess-8 3000000 548 ns/op 160 B/op 5 allocs/op
BenchmarkStructLevelValidationFailure-8 3000000 558 ns/op 160 B/op 5 allocs/op
BenchmarkStructSimpleCustomTypeSuccess-8 2000000 623 ns/op 36 B/op 3 allocs/op
BenchmarkStructSimpleCustomTypeFailure-8 1000000 1381 ns/op 640 B/op 9 allocs/op
BenchmarkStructPartialSuccess-8 1000000 1036 ns/op 272 B/op 9 allocs/op
BenchmarkStructPartialFailure-8 1000000 1734 ns/op 730 B/op 14 allocs/op
BenchmarkStructExceptSuccess-8 2000000 888 ns/op 250 B/op 7 allocs/op
BenchmarkStructExceptFailure-8 1000000 1036 ns/op 272 B/op 9 allocs/op
BenchmarkStructSimpleCrossFieldSuccess-8 2000000 773 ns/op 80 B/op 4 allocs/op
BenchmarkStructSimpleCrossFieldFailure-8 1000000 1487 ns/op 536 B/op 9 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 1000000 1261 ns/op 112 B/op 7 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 1000000 2055 ns/op 576 B/op 12 allocs/op
BenchmarkStructSimpleSuccess-8 3000000 519 ns/op 4 B/op 1 allocs/op
BenchmarkStructSimpleFailure-8 1000000 1429 ns/op 640 B/op 9 allocs/op
BenchmarkStructSimpleSuccessParallel-8 10000000 146 ns/op 4 B/op 1 allocs/op
BenchmarkStructSimpleFailureParallel-8 2000000 551 ns/op 640 B/op 9 allocs/op
BenchmarkStructComplexSuccess-8 500000 3269 ns/op 244 B/op 15 allocs/op
BenchmarkStructComplexFailure-8 200000 8436 ns/op 3609 B/op 60 allocs/op
BenchmarkStructComplexSuccessParallel-8 1000000 1024 ns/op 244 B/op 15 allocs/op
BenchmarkStructComplexFailureParallel-8 500000 3536 ns/op 3609 B/op 60 allocs/op
```
Complimentary Software

@ -407,6 +407,42 @@ func TestAnonymous(t *testing.T) {
Equal(t, err, nil)
}
func TestAnonymousSameStructDifferentTags(t *testing.T) {
v2 := New(&Config{TagName: "validate", FieldNameTag: "json"})
type Test struct {
A interface{}
}
tst := &Test{
A: struct {
A string `validate:"required"`
}{
A: "",
},
}
err := v2.Struct(tst)
NotEqual(t, err, nil)
errs := err.(ValidationErrors)
Equal(t, len(errs), 1)
AssertError(t, errs, "Test.A.A", "A", "required")
tst = &Test{
A: struct {
A string `validate:"omitempty,required"`
}{
A: "",
},
}
err = v2.Struct(tst)
Equal(t, err, nil)
}
func TestStructLevelReturnValidationErrors(t *testing.T) {
config := &Config{
TagName: "validate",

Loading…
Cancel
Save