Dean Karn
61caf9d303
add map key validation support ( #324 )
7 years ago
Dean Karn
1304298bf1
Update README.md
7 years ago
Dean Karn
34b84953ff
change related software
7 years ago
Dean Karn
11a1fab51d
Add unique validation
7 years ago
Dean Karn
0b5dc7605b
Add isdefault validation
7 years ago
Dean Karn
5c4193d98e
Update README.md
7 years ago
Dean Karn
44d9acf0a8
Update README.md
7 years ago
Dean Karn
0f6f568263
Add contextual validation support via context.Context ( #296 )
...
* Add contextual validation support via context.Context
Added:
- RegisterValidationCtx
- RegisterStructValidationCtx
- StructCtx
- StructFilteredCtx
- StructPartialCtx
- StructExceptCtx
- VarCtx
- VarWithValueCtx
7 years ago
Dean Karn
fb68f39656
Add Access to Field Name from FieldLevel ( #284 )
8 years ago
Dean Karn
27158c7a84
Update README.md
8 years ago
Dean Karn
755afb9dde
Update README.md
...
Adjustments due to GitHub's new markdown parser
8 years ago
Dean Karn
4bd1935852
Updated README
...
- Corrected some typos in README which Fixes #273
- Updated Benchmarks for Go 1.8
- updated lint issue in one of the tests
8 years ago
Dean Karn
b250b44763
Update test & benchmarks
...
- Updated failing test for new translation error message.
- Updated benchmarks with new machine at the same time.
8 years ago
Dean Karn
691ea55063
Update README.md
8 years ago
Dean Karn
077c3830f3
Correct Namespace when array or map of structs
...
namespace was incorrect when array or map of structs, see #266
8 years ago
Dean Karn
49fccadad1
correct structonly functionality
...
- structonly wasn’t behaving correctly when not used with an accompanying struct validation.
8 years ago
Dean Karn
4d76b0dd81
Add alphaunicode & aplhanumericunicode
...
- added unicode variants of alpha & alphanumeric
8 years ago
Dean Karn
4e43fa1562
change field cache to array
...
- errors now come out in order for unit tests
- speed improvement using array vs map
benchmark old ns/op new ns/op delta
BenchmarkFieldSuccess-8 101 100 -0.99%
BenchmarkFieldSuccessParallel-8 33.2 33.7 +1.51%
BenchmarkFieldFailure-8 323 332 +2.79%
BenchmarkFieldFailureParallel-8 112 113 +0.89%
BenchmarkFieldDiveSuccess-8 719 714 -0.70%
BenchmarkFieldDiveSuccessParallel-8 230 225 -2.17%
BenchmarkFieldDiveFailure-8 1001 987 -1.40%
BenchmarkFieldDiveFailureParallel-8 323 317 -1.86%
BenchmarkFieldCustomTypeSuccess-8 263 264 +0.38%
BenchmarkFieldCustomTypeSuccessParallel-8 82.6 81.4 -1.45%
BenchmarkFieldCustomTypeFailure-8 327 328 +0.31%
BenchmarkFieldCustomTypeFailureParallel-8 116 116 +0.00%
BenchmarkFieldOrTagSuccess-8 871 878 +0.80%
BenchmarkFieldOrTagSuccessParallel-8 394 402 +2.03%
BenchmarkFieldOrTagFailure-8 568 569 +0.18%
BenchmarkFieldOrTagFailureParallel-8 397 401 +1.01%
BenchmarkStructLevelValidationSuccess-8 332 267 -19.58%
BenchmarkStructLevelValidationSuccessParallel-8 105 82.4 -21.52%
BenchmarkStructLevelValidationFailure-8 637 557 -12.56%
BenchmarkStructLevelValidationFailureParallel-8 260 226 -13.08%
BenchmarkStructSimpleCustomTypeSuccess-8 525 452 -13.90%
BenchmarkStructSimpleCustomTypeSuccessParallel-8 155 144 -7.10%
BenchmarkStructSimpleCustomTypeFailure-8 828 738 -10.87%
BenchmarkStructSimpleCustomTypeFailureParallel-8 345 285 -17.39%
BenchmarkStructFilteredSuccess-8 744 664 -10.75%
BenchmarkStructFilteredSuccessParallel-8 274 257 -6.20%
BenchmarkStructFilteredFailure-8 595 517 -13.11%
BenchmarkStructFilteredFailureParallel-8 250 195 -22.00%
BenchmarkStructPartialSuccess-8 674 608 -9.79%
BenchmarkStructPartialSuccessParallel-8 256 225 -12.11%
BenchmarkStructPartialFailure-8 928 848 -8.62%
BenchmarkStructPartialFailureParallel-8 399 360 -9.77%
BenchmarkStructExceptSuccess-8 1076 934 -13.20%
BenchmarkStructExceptSuccessParallel-8 237 200 -15.61%
BenchmarkStructExceptFailure-8 873 787 -9.85%
BenchmarkStructExceptFailureParallel-8 365 333 -8.77%
BenchmarkStructSimpleCrossFieldSuccess-8 539 489 -9.28%
BenchmarkStructSimpleCrossFieldSuccessParallel-8 201 168 -16.42%
BenchmarkStructSimpleCrossFieldFailure-8 788 709 -10.03%
BenchmarkStructSimpleCrossFieldFailureParallel-8 322 299 -7.14%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 795 683 -14.09%
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 241 211 -12.45%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 1110 940 -15.32%
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 399 333 -16.54%
BenchmarkStructSimpleSuccess-8 367 285 -22.34%
BenchmarkStructSimpleSuccessParallel-8 108 91.0 -15.74%
BenchmarkStructSimpleFailure-8 776 698 -10.05%
BenchmarkStructSimpleFailureParallel-8 307 284 -7.49%
BenchmarkStructComplexSuccess-8 2224 1622 -27.07%
BenchmarkStructComplexSuccessParallel-8 718 526 -26.74%
BenchmarkStructComplexFailure-8 5350 4717 -11.83%
BenchmarkStructComplexFailureParallel-8 2097 1853 -11.64%
8 years ago
Dean Karn
493dfb6209
correct required tag functionality for pointers, now works like old `exists` tag.
8 years ago
Dean Karn
506cc5da56
Add Filter logic
8 years ago
Dean Karn
0c0ae405d3
Update README.md
8 years ago
Dean Karn
23e84d2f88
Update README.md
8 years ago
Dean Karn
cddc415625
perf enhancements + corrected issue with or's
...
- or's weren't reporting the param back in the tag, long standing but noticed issue.
- added validation check for or's when more validations exist after the or.
8 years ago
Dean Karn
7c2b5d8471
Update README.md
8 years ago
Dean Karn
0e70fdfc72
add translation example + documentation
8 years ago
Dean Karn
a7ca4a1d32
add default translations for "en"
...
- need help creating more.
8 years ago
Dean Karn
0af0043f29
update CI badge to v9
8 years ago
Dean Karn
a7cc53a707
documentation, examples and template updates.
8 years ago
Dean Karn
9ba3297c49
Update benchmarks run against Go 1.7
...
Go 1.7 some nice boosts, for nothing!
```
benchmark old ns/op new ns/op delta
BenchmarkFieldSuccess-8 147 108 -26.53%
BenchmarkFieldSuccessParallel-8 42.5 35.7 -16.00%
BenchmarkFieldFailure-8 417 320 -23.26%
BenchmarkFieldFailureParallel-8 140 113 -19.29%
BenchmarkFieldDiveSuccess-8 876 726 -17.12%
BenchmarkFieldDiveSuccessParallel-8 277 263 -5.05%
BenchmarkFieldDiveFailure-8 1185 939 -20.76%
BenchmarkFieldDiveFailureParallel-8 402 382 -4.98%
BenchmarkFieldCustomTypeSuccess-8 321 268 -16.51%
BenchmarkFieldCustomTypeSuccessParallel-8 104 87.8 -15.58%
BenchmarkFieldCustomTypeFailure-8 416 310 -25.48%
BenchmarkFieldCustomTypeFailureParallel-8 150 131 -12.67%
BenchmarkFieldOrTagSuccess-8 1119 889 -20.55%
BenchmarkFieldOrTagSuccessParallel-8 462 418 -9.52%
BenchmarkFieldOrTagFailure-8 715 546 -23.64%
BenchmarkFieldOrTagFailureParallel-8 436 450 +3.21%
BenchmarkStructLevelValidationSuccess-8 399 336 -15.79%
BenchmarkStructLevelValidationSuccessParallel-8 140 123 -12.14%
BenchmarkStructLevelValidationFailure-8 749 611 -18.42%
BenchmarkStructLevelValidationFailureParallel-8 296 298 +0.68%
BenchmarkStructSimpleCustomTypeSuccess-8 673 555 -17.53%
BenchmarkStructSimpleCustomTypeSuccessParallel-8 213 197 -7.51%
BenchmarkStructSimpleCustomTypeFailure-8 1056 811 -23.20%
BenchmarkStructSimpleCustomTypeFailureParallel-8 450 370 -17.78%
BenchmarkStructPartialSuccess-8 789 676 -14.32%
BenchmarkStructPartialSuccessParallel-8 307 301 -1.95%
BenchmarkStructPartialFailure-8 1105 1001 -9.41%
BenchmarkStructPartialFailureParallel-8 493 436 -11.56%
BenchmarkStructExceptSuccess-8 1212 1038 -14.36%
BenchmarkStructExceptSuccessParallel-8 282 281 -0.35%
BenchmarkStructExceptFailure-8 1004 863 -14.04%
BenchmarkStructExceptFailureParallel-8 452 379 -16.15%
BenchmarkStructSimpleCrossFieldSuccess-8 656 549 -16.31%
BenchmarkStructSimpleCrossFieldSuccessParallel-8 211 192 -9.00%
BenchmarkStructSimpleCrossFieldFailure-8 968 783 -19.11%
BenchmarkStructSimpleCrossFieldFailureParallel-8 406 296 -27.09%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 1000 837 -16.30%
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 334 284 -14.97%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 1324 1110 -16.16%
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 520 416 -20.00%
BenchmarkStructSimpleSuccess-8 534 380 -28.84%
BenchmarkStructSimpleSuccessParallel-8 144 114 -20.83%
BenchmarkStructSimpleFailure-8 1039 760 -26.85%
BenchmarkStructSimpleFailureParallel-8 419 353 -15.75%
BenchmarkStructComplexSuccess-8 2678 2100 -21.58%
BenchmarkStructComplexSuccessParallel-8 874 662 -24.26%
BenchmarkStructComplexFailure-8 6342 5080 -19.90%
BenchmarkStructComplexFailureParallel-8 2875 2159 -24.90%
benchmark old allocs new allocs delta
BenchmarkFieldSuccess-8 0 0 +0.00%
BenchmarkFieldSuccessParallel-8 0 0 +0.00%
BenchmarkFieldFailure-8 4 4 +0.00%
BenchmarkFieldFailureParallel-8 4 4 +0.00%
BenchmarkFieldDiveSuccess-8 11 11 +0.00%
BenchmarkFieldDiveSuccessParallel-8 11 11 +0.00%
BenchmarkFieldDiveFailure-8 16 16 +0.00%
BenchmarkFieldDiveFailureParallel-8 16 16 +0.00%
BenchmarkFieldCustomTypeSuccess-8 2 2 +0.00%
BenchmarkFieldCustomTypeSuccessParallel-8 2 2 +0.00%
BenchmarkFieldCustomTypeFailure-8 4 4 +0.00%
BenchmarkFieldCustomTypeFailureParallel-8 4 4 +0.00%
BenchmarkFieldOrTagSuccess-8 1 1 +0.00%
BenchmarkFieldOrTagSuccessParallel-8 1 1 +0.00%
BenchmarkFieldOrTagFailure-8 5 5 +0.00%
BenchmarkFieldOrTagFailureParallel-8 5 5 +0.00%
BenchmarkStructLevelValidationSuccess-8 2 2 +0.00%
BenchmarkStructLevelValidationSuccessParallel-8 2 2 +0.00%
BenchmarkStructLevelValidationFailure-8 8 8 +0.00%
BenchmarkStructLevelValidationFailureParallel-8 8 8 +0.00%
BenchmarkStructSimpleCustomTypeSuccess-8 2 2 +0.00%
BenchmarkStructSimpleCustomTypeSuccessParallel-8 2 2 +0.00%
BenchmarkStructSimpleCustomTypeFailure-8 9 9 +0.00%
BenchmarkStructSimpleCustomTypeFailureParallel-8 10 10 +0.00%
BenchmarkStructPartialSuccess-8 6 6 +0.00%
BenchmarkStructPartialSuccessParallel-8 6 6 +0.00%
BenchmarkStructPartialFailure-8 11 11 +0.00%
BenchmarkStructPartialFailureParallel-8 11 11 +0.00%
BenchmarkStructExceptSuccess-8 12 12 +0.00%
BenchmarkStructExceptSuccessParallel-8 5 5 +0.00%
BenchmarkStructExceptFailure-8 10 10 +0.00%
BenchmarkStructExceptFailureParallel-8 10 10 +0.00%
BenchmarkStructSimpleCrossFieldSuccess-8 3 3 +0.00%
BenchmarkStructSimpleCrossFieldSuccessParallel-8 3 3 +0.00%
BenchmarkStructSimpleCrossFieldFailure-8 8 8 +0.00%
BenchmarkStructSimpleCrossFieldFailureParallel-8 8 8 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 4 4 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 4 4 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 9 9 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 9 9 +0.00%
BenchmarkStructSimpleSuccess-8 0 0 +0.00%
BenchmarkStructSimpleSuccessParallel-8 0 0 +0.00%
BenchmarkStructSimpleFailure-8 9 9 +0.00%
BenchmarkStructSimpleFailureParallel-8 9 9 +0.00%
BenchmarkStructComplexSuccess-8 8 8 +0.00%
BenchmarkStructComplexSuccessParallel-8 8 8 +0.00%
BenchmarkStructComplexFailure-8 53 53 +0.00%
BenchmarkStructComplexFailureParallel-8 53 53 +0.00%
benchmark old bytes new bytes delta
BenchmarkFieldSuccess-8 0 0 +0.00%
BenchmarkFieldSuccessParallel-8 0 0 +0.00%
BenchmarkFieldFailure-8 192 192 +0.00%
BenchmarkFieldFailureParallel-8 192 192 +0.00%
BenchmarkFieldDiveSuccess-8 201 201 +0.00%
BenchmarkFieldDiveSuccessParallel-8 201 201 +0.00%
BenchmarkFieldDiveFailure-8 396 396 +0.00%
BenchmarkFieldDiveFailureParallel-8 397 397 +0.00%
BenchmarkFieldCustomTypeSuccess-8 32 32 +0.00%
BenchmarkFieldCustomTypeSuccessParallel-8 32 32 +0.00%
BenchmarkFieldCustomTypeFailure-8 192 192 +0.00%
BenchmarkFieldCustomTypeFailureParallel-8 192 192 +0.00%
BenchmarkFieldOrTagSuccess-8 16 16 +0.00%
BenchmarkFieldOrTagSuccessParallel-8 16 16 +0.00%
BenchmarkFieldOrTagFailure-8 208 208 +0.00%
BenchmarkFieldOrTagFailureParallel-8 208 208 +0.00%
BenchmarkStructLevelValidationSuccess-8 32 32 +0.00%
BenchmarkStructLevelValidationSuccessParallel-8 32 32 +0.00%
BenchmarkStructLevelValidationFailure-8 288 288 +0.00%
BenchmarkStructLevelValidationFailureParallel-8 288 288 +0.00%
BenchmarkStructSimpleCustomTypeSuccess-8 32 32 +0.00%
BenchmarkStructSimpleCustomTypeSuccessParallel-8 32 32 +0.00%
BenchmarkStructSimpleCustomTypeFailure-8 392 392 +0.00%
BenchmarkStructSimpleCustomTypeFailureParallel-8 408 408 +0.00%
BenchmarkStructPartialSuccess-8 256 256 +0.00%
BenchmarkStructPartialSuccessParallel-8 256 256 +0.00%
BenchmarkStructPartialFailure-8 464 464 +0.00%
BenchmarkStructPartialFailureParallel-8 464 464 +0.00%
BenchmarkStructExceptSuccess-8 480 480 +0.00%
BenchmarkStructExceptSuccessParallel-8 240 240 +0.00%
BenchmarkStructExceptFailure-8 448 448 +0.00%
BenchmarkStructExceptFailureParallel-8 448 448 +0.00%
BenchmarkStructSimpleCrossFieldSuccess-8 72 72 +0.00%
BenchmarkStructSimpleCrossFieldSuccessParallel-8 72 72 +0.00%
BenchmarkStructSimpleCrossFieldFailure-8 288 288 +0.00%
BenchmarkStructSimpleCrossFieldFailureParallel-8 288 288 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 80 80 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 80 80 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 304 304 +0.00%
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 304 304 +0.00%
BenchmarkStructSimpleSuccess-8 0 0 +0.00%
BenchmarkStructSimpleSuccessParallel-8 0 0 +0.00%
BenchmarkStructSimpleFailure-8 392 392 +0.00%
BenchmarkStructSimpleFailureParallel-8 392 392 +0.00%
BenchmarkStructComplexSuccess-8 128 128 +0.00%
BenchmarkStructComplexSuccessParallel-8 128 128 +0.00%
BenchmarkStructComplexFailure-8 2833 2833 +0.00%
BenchmarkStructComplexFailureParallel-8 2833 2833 +0.00%
```
8 years ago
Dean Karn
1cbfa0bbff
RC1 Release
8 years ago
joeybloggs
b0883e6ed8
RC1 Release
...
- Updated docs ( much more to come )
- v9 is much simpler to use.
v8 vs v9 improvements
```
benchmark old ns/op new ns/op delta
BenchmarkFieldSuccess-8 118 147 +24.58%
BenchmarkFieldFailure-8 758 417 -44.99%
BenchmarkFieldDiveSuccess-8 2471 876 -64.55%
BenchmarkFieldDiveFailure-8 3172 1185 -62.64%
BenchmarkFieldCustomTypeSuccess-8 300 321 +7.00%
BenchmarkFieldCustomTypeFailure-8 775 416 -46.32%
BenchmarkFieldOrTagSuccess-8 1122 1119 -0.27%
BenchmarkFieldOrTagFailure-8 1167 715 -38.73%
BenchmarkStructLevelValidationSuccess-8 548 399 -27.19%
BenchmarkStructLevelValidationFailure-8 558 749 +34.23%
BenchmarkStructSimpleCustomTypeSuccess-8 623 673 +8.03%
BenchmarkStructSimpleCustomTypeFailure-8 1381 1056 -23.53%
BenchmarkStructPartialSuccess-8 1036 789 -23.84%
BenchmarkStructPartialFailure-8 1734 1105 -36.27%
BenchmarkStructExceptSuccess-8 888 1212 +36.49%
BenchmarkStructExceptFailure-8 1036 1004 -3.09%
BenchmarkStructSimpleCrossFieldSuccess-8 773 656 -15.14%
BenchmarkStructSimpleCrossFieldFailure-8 1487 968 -34.90%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 1261 1000 -20.70%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 2055 1324 -35.57%
BenchmarkStructSimpleSuccess-8 519 534 +2.89%
BenchmarkStructSimpleFailure-8 1429 1039 -27.29%
BenchmarkStructSimpleSuccessParallel-8 146 144 -1.37%
BenchmarkStructSimpleFailureParallel-8 551 419 -23.96%
BenchmarkStructComplexSuccess-8 3269 2678 -18.08%
BenchmarkStructComplexFailure-8 8436 6342 -24.82%
BenchmarkStructComplexSuccessParallel-8 1024 874 -14.65%
BenchmarkStructComplexFailureParallel-8 3536 2875 -18.69%
benchmark old allocs new allocs delta
BenchmarkFieldSuccess-8 0 0 +0.00%
BenchmarkFieldFailure-8 4 4 +0.00%
BenchmarkFieldDiveSuccess-8 28 11 -60.71%
BenchmarkFieldDiveFailure-8 32 16 -50.00%
BenchmarkFieldCustomTypeSuccess-8 2 2 +0.00%
BenchmarkFieldCustomTypeFailure-8 4 4 +0.00%
BenchmarkFieldOrTagSuccess-8 1 1 +0.00%
BenchmarkFieldOrTagFailure-8 6 5 -16.67%
BenchmarkStructLevelValidationSuccess-8 5 2 -60.00%
BenchmarkStructLevelValidationFailure-8 5 8 +60.00%
BenchmarkStructSimpleCustomTypeSuccess-8 3 2 -33.33%
BenchmarkStructSimpleCustomTypeFailure-8 9 9 +0.00%
BenchmarkStructPartialSuccess-8 9 6 -33.33%
BenchmarkStructPartialFailure-8 14 11 -21.43%
BenchmarkStructExceptSuccess-8 7 12 +71.43%
BenchmarkStructExceptFailure-8 9 10 +11.11%
BenchmarkStructSimpleCrossFieldSuccess-8 4 3 -25.00%
BenchmarkStructSimpleCrossFieldFailure-8 9 8 -11.11%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 7 4 -42.86%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 12 9 -25.00%
BenchmarkStructSimpleSuccess-8 1 0 -100.00%
BenchmarkStructSimpleFailure-8 9 9 +0.00%
BenchmarkStructSimpleSuccessParallel-8 1 0 -100.00%
BenchmarkStructSimpleFailureParallel-8 9 9 +0.00%
BenchmarkStructComplexSuccess-8 15 8 -46.67%
BenchmarkStructComplexFailure-8 60 53 -11.67%
BenchmarkStructComplexSuccessParallel-8 15 8 -46.67%
BenchmarkStructComplexFailureParallel-8 60 53 -11.67%
benchmark old bytes new bytes delta
BenchmarkFieldSuccess-8 0 0 +0.00%
BenchmarkFieldFailure-8 432 192 -55.56%
BenchmarkFieldDiveSuccess-8 464 201 -56.68%
BenchmarkFieldDiveFailure-8 896 396 -55.80%
BenchmarkFieldCustomTypeSuccess-8 32 32 +0.00%
BenchmarkFieldCustomTypeFailure-8 432 192 -55.56%
BenchmarkFieldOrTagSuccess-8 4 16 +300.00%
BenchmarkFieldOrTagFailure-8 448 208 -53.57%
BenchmarkStructLevelValidationSuccess-8 160 32 -80.00%
BenchmarkStructLevelValidationFailure-8 160 288 +80.00%
BenchmarkStructSimpleCustomTypeSuccess-8 36 32 -11.11%
BenchmarkStructSimpleCustomTypeFailure-8 640 392 -38.75%
BenchmarkStructPartialSuccess-8 272 256 -5.88%
BenchmarkStructPartialFailure-8 730 464 -36.44%
BenchmarkStructExceptSuccess-8 250 480 +92.00%
BenchmarkStructExceptFailure-8 272 448 +64.71%
BenchmarkStructSimpleCrossFieldSuccess-8 80 72 -10.00%
BenchmarkStructSimpleCrossFieldFailure-8 536 288 -46.27%
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 112 80 -28.57%
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 576 304 -47.22%
BenchmarkStructSimpleSuccess-8 4 0 -100.00%
BenchmarkStructSimpleFailure-8 640 392 -38.75%
BenchmarkStructSimpleSuccessParallel-8 4 0 -100.00%
BenchmarkStructSimpleFailureParallel-8 640 392 -38.75%
BenchmarkStructComplexSuccess-8 244 128 -47.54%
BenchmarkStructComplexFailure-8 3609 2833 -21.50%
BenchmarkStructComplexSuccessParallel-8 244 128 -47.54%
BenchmarkStructComplexFailureParallel-8 3609 2833 -21.50%
```
8 years ago
joeybloggs
e0e1af6a61
working instance
8 years ago
Dean Karn
598aac293f
Update README.md
8 years ago
joeybloggs
5f57d2222a
increment version in README
8 years ago
joeybloggs
89d5a94084
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%
```
8 years ago
joeybloggs
80301d1184
fix go report card badge.
8 years ago
joeybloggs
7a080ada5b
Fix issue with omitempty combined with nullable types in combination with a default static value set as the value
...
fix for issue-#249
8 years ago
joeybloggs
014792cf3e
Update README version
9 years ago
Dean Karn
1214d3629c
Update README.md
9 years ago
joeybloggs
f38559b489
Update checking unexpected fields for Go 1.6 https://tip.golang.org/doc/go1.6#reflect
...
* I have not run into the issue yet, but being preemptive
9 years ago
Dean Karn
73aaa89512
Update README.md
9 years ago
joeybloggs
64b7e2bb79
correct CI links
9 years ago
joeybloggs
50ada8d03a
Add Complimentary software section README
9 years ago
joeybloggs
0862513fbf
Add some string check optimizations
...
* was using len(string) for some blank checks instead of string == ""
9 years ago
joeybloggs
afbcf59553
Add FieldNamespace and NameNamespace
...
* Add FieldNamespace and NameNamespace to FieldError. This allows for having the CustomName i.e. JSON namespace contained within the NameNamespace which would be very useful when using a more restful API approach.
9 years ago
Anthony Olurin
c4d5999ec0
Added logo to ReadMe
9 years ago
joeybloggs
e019c28542
Add struct field + associated tags caching
...
* This essentially reduces the number of cache tag lookups for a structs fields to one.
9 years ago
joeybloggs
b0bd08d7c8
Micro optimization in Tag Cache
...
Removed defer from the simple Tag Cache lock & unlock and reduced
execution time for even single field validation by almost 100ns
from 254ns/op to 163ns/op .. Not badd for such a simple modification
and this effect ripples throughout struct validation.
```go
$ go test -cpu=4 -bench=. -benchmem=true
PASS
BenchmarkFieldSuccess-4 10000000 163 ns/op 0 B/op 0 allocs/op
BenchmarkFieldFailure-4 2000000 673 ns/op 400 B/op 4 allocs/op
BenchmarkFieldDiveSuccess-4 500000 3019 ns/op 480 B/op 27 allocs/op
BenchmarkFieldDiveFailure-4 500000 3553 ns/op 880 B/op 31 allocs/op
BenchmarkFieldCustomTypeSuccess-4 5000000 347 ns/op 32 B/op 2 allocs/op
BenchmarkFieldCustomTypeFailure-4 2000000 645 ns/op 400 B/op 4 allocs/op
BenchmarkFieldOrTagSuccess-4 1000000 1177 ns/op 16 B/op 1 allocs/op
BenchmarkFieldOrTagFailure-4 1000000 1093 ns/op 432 B/op 6 allocs/op
BenchmarkStructLevelValidationSuccess-4 2000000 702 ns/op 160 B/op 6 allocs/op
BenchmarkStructLevelValidationFailure-4 1000000 1279 ns/op 592 B/op 11 allocs/op
BenchmarkStructSimpleCustomTypeSuccess-4 1000000 1010 ns/op 80 B/op 5 allocs/op
BenchmarkStructSimpleCustomTypeFailure-4 1000000 1544 ns/op 624 B/op 11 allocs/op
BenchmarkStructPartialSuccess-4 1000000 1249 ns/op 400 B/op 11 allocs/op
BenchmarkStructPartialFailure-4 1000000 1797 ns/op 816 B/op 16 allocs/op
BenchmarkStructExceptSuccess-4 2000000 927 ns/op 368 B/op 9 allocs/op
BenchmarkStructExceptFailure-4 1000000 1259 ns/op 400 B/op 11 allocs/op
BenchmarkStructSimpleCrossFieldSuccess-4 1000000 1076 ns/op 128 B/op 6 allocs/op
BenchmarkStructSimpleCrossFieldFailure-4 1000000 1623 ns/op 560 B/op 11 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccess-4 1000000 1582 ns/op 176 B/op 9 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailure-4 1000000 2139 ns/op 608 B/op 14 allocs/op
BenchmarkStructSimpleSuccess-4 1000000 1040 ns/op 48 B/op 3 allocs/op
BenchmarkStructSimpleFailure-4 1000000 1683 ns/op 624 B/op 11 allocs/op
BenchmarkStructSimpleSuccessParallel-4 5000000 356 ns/op 48 B/op 3 allocs/op
BenchmarkStructSimpleFailureParallel-4 2000000 831 ns/op 624 B/op 11 allocs/op
BenchmarkStructComplexSuccess-4 200000 6738 ns/op 512 B/op 30 allocs/op
BenchmarkStructComplexFailure-4 200000 11387 ns/op 3415 B/op 72 allocs/op
BenchmarkStructComplexSuccessParallel-4 500000 2330 ns/op 512 B/op 30 allocs/op
BenchmarkStructComplexFailureParallel-4 300000 4857 ns/op 3416 B/op 72 allocs/op
```
```go
$ go test -cpu=4 -bench=. -benchmem=true
PASS
BenchmarkFieldSuccess-4 5000000 254 ns/op 0 B/op 0 allocs/op
BenchmarkFieldFailure-4 2000000 779 ns/op 400 B/op 4 allocs/op
BenchmarkFieldDiveSuccess-4 500000 3451 ns/op 480 B/op 27 allocs/op
BenchmarkFieldDiveFailure-4 300000 3954 ns/op 880 B/op 31 allocs/op
BenchmarkFieldCustomTypeSuccess-4 3000000 451 ns/op 32 B/op 2 allocs/op
BenchmarkFieldCustomTypeFailure-4 2000000 751 ns/op 400 B/op 4 allocs/op
BenchmarkFieldOrTagSuccess-4 1000000 1312 ns/op 16 B/op 1 allocs/op
BenchmarkFieldOrTagFailure-4 1000000 1206 ns/op 432 B/op 6 allocs/op
BenchmarkStructLevelValidationSuccess-4 2000000 829 ns/op 160 B/op 6 allocs/op
BenchmarkStructLevelValidationFailure-4 1000000 1403 ns/op 592 B/op 11 allocs/op
BenchmarkStructSimpleCustomTypeSuccess-4 1000000 1238 ns/op 80 B/op 5 allocs/op
BenchmarkStructSimpleCustomTypeFailure-4 1000000 1771 ns/op 624 B/op 11 allocs/op
BenchmarkStructPartialSuccess-4 1000000 1399 ns/op 400 B/op 11 allocs/op
BenchmarkStructPartialFailure-4 1000000 1926 ns/op 816 B/op 16 allocs/op
BenchmarkStructExceptSuccess-4 2000000 930 ns/op 368 B/op 9 allocs/op
BenchmarkStructExceptFailure-4 1000000 1381 ns/op 400 B/op 11 allocs/op
BenchmarkStructSimpleCrossFieldSuccess-4 1000000 1253 ns/op 128 B/op 6 allocs/op
BenchmarkStructSimpleCrossFieldFailure-4 1000000 1849 ns/op 560 B/op 11 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldSuccess-4 1000000 1902 ns/op 176 B/op 9 allocs/op
BenchmarkStructSimpleCrossStructCrossFieldFailure-4 500000 2453 ns/op 608 B/op 14 allocs/op
BenchmarkStructSimpleSuccess-4 1000000 1182 ns/op 48 B/op 3 allocs/op
BenchmarkStructSimpleFailure-4 1000000 1842 ns/op 624 B/op 11 allocs/op
BenchmarkStructSimpleSuccessParallel-4 5000000 342 ns/op 48 B/op 3 allocs/op
BenchmarkStructSimpleFailureParallel-4 2000000 665 ns/op 624 B/op 11 allocs/op
BenchmarkStructComplexSuccess-4 200000 7924 ns/op 512 B/op 30 allocs/op
BenchmarkStructComplexFailure-4 100000 12605 ns/op 3415 B/op 72 allocs/op
BenchmarkStructComplexSuccessParallel-4 1000000 2421 ns/op 512 B/op 30 allocs/op
BenchmarkStructComplexFailureParallel-4 300000 4234 ns/op 3416 B/op 72 allocs/op
```
9 years ago
joeybloggs
d451d57023
Update benchmarks + correct benchmark error
...
* Fix error with BenchmarkFieldFailure, it was recording a successful
run.
* Update some benchmarks, they were showing allocations for the creation
of the data not just processing it.
9 years ago
joeybloggs
59859969c6
Fix issue with structOnly + struct level validation
...
* Issue was that when "structonly" tag was set the struct
level validation wasn't running, this has been corrected.
9 years ago