64 | 64 |
|
65 | 65 |
Benchmarks
|
66 | 66 |
------
|
67 | |
###### Run on Dell XPS 15 i7-7700HQ 32GB Go version go1.8.3 linux/amd64
|
|
67 |
###### Run on MacBook Pro (15-inch, 2017) Go version go1.9.1 linux/amd64
|
68 | 68 |
```go
|
69 | |
go test -run=XXX -bench=. -benchmem=true
|
70 | |
BenchmarkFieldSuccess-8 20000000 88.3 ns/op 0 B/op 0 allocs/op
|
71 | |
BenchmarkFieldSuccessParallel-8 50000000 30.4 ns/op 0 B/op 0 allocs/op
|
72 | |
BenchmarkFieldFailure-8 3000000 428 ns/op 208 B/op 4 allocs/op
|
73 | |
BenchmarkFieldFailureParallel-8 20000000 96.0 ns/op 208 B/op 4 allocs/op
|
74 | |
BenchmarkFieldDiveSuccess-8 2000000 695 ns/op 201 B/op 11 allocs/op
|
75 | |
BenchmarkFieldDiveSuccessParallel-8 10000000 205 ns/op 201 B/op 11 allocs/op
|
76 | |
BenchmarkFieldDiveFailure-8 1000000 1083 ns/op 412 B/op 16 allocs/op
|
77 | |
BenchmarkFieldDiveFailureParallel-8 5000000 278 ns/op 413 B/op 16 allocs/op
|
78 | |
BenchmarkFieldCustomTypeSuccess-8 10000000 229 ns/op 32 B/op 2 allocs/op
|
79 | |
BenchmarkFieldCustomTypeSuccessParallel-8 20000000 72.4 ns/op 32 B/op 2 allocs/op
|
80 | |
BenchmarkFieldCustomTypeFailure-8 5000000 377 ns/op 208 B/op 4 allocs/op
|
81 | |
BenchmarkFieldCustomTypeFailureParallel-8 20000000 93.0 ns/op 208 B/op 4 allocs/op
|
82 | |
BenchmarkFieldOrTagSuccess-8 2000000 767 ns/op 16 B/op 1 allocs/op
|
83 | |
BenchmarkFieldOrTagSuccessParallel-8 3000000 425 ns/op 16 B/op 1 allocs/op
|
84 | |
BenchmarkFieldOrTagFailure-8 2000000 548 ns/op 224 B/op 5 allocs/op
|
85 | |
BenchmarkFieldOrTagFailureParallel-8 3000000 411 ns/op 224 B/op 5 allocs/op
|
86 | |
BenchmarkStructLevelValidationSuccess-8 10000000 219 ns/op 32 B/op 2 allocs/op
|
87 | |
BenchmarkStructLevelValidationSuccessParallel-8 20000000 69.2 ns/op 32 B/op 2 allocs/op
|
88 | |
BenchmarkStructLevelValidationFailure-8 2000000 628 ns/op 304 B/op 8 allocs/op
|
89 | |
BenchmarkStructLevelValidationFailureParallel-8 10000000 165 ns/op 304 B/op 8 allocs/op
|
90 | |
BenchmarkStructSimpleCustomTypeSuccess-8 3000000 411 ns/op 32 B/op 2 allocs/op
|
91 | |
BenchmarkStructSimpleCustomTypeSuccessParallel-8 10000000 122 ns/op 32 B/op 2 allocs/op
|
92 | |
BenchmarkStructSimpleCustomTypeFailure-8 1000000 1022 ns/op 424 B/op 9 allocs/op
|
93 | |
BenchmarkStructSimpleCustomTypeFailureParallel-8 10000000 228 ns/op 440 B/op 10 allocs/op
|
94 | |
BenchmarkStructFilteredSuccess-8 2000000 737 ns/op 288 B/op 9 allocs/op
|
95 | |
BenchmarkStructFilteredSuccessParallel-8 10000000 192 ns/op 288 B/op 9 allocs/op
|
96 | |
BenchmarkStructFilteredFailure-8 3000000 583 ns/op 256 B/op 7 allocs/op
|
97 | |
BenchmarkStructFilteredFailureParallel-8 10000000 152 ns/op 256 B/op 7 allocs/op
|
98 | |
BenchmarkStructPartialSuccess-8 2000000 731 ns/op 256 B/op 6 allocs/op
|
99 | |
BenchmarkStructPartialSuccessParallel-8 10000000 173 ns/op 256 B/op 6 allocs/op
|
100 | |
BenchmarkStructPartialFailure-8 1000000 1164 ns/op 480 B/op 11 allocs/op
|
101 | |
BenchmarkStructPartialFailureParallel-8 5000000 253 ns/op 480 B/op 11 allocs/op
|
102 | |
BenchmarkStructExceptSuccess-8 1000000 1337 ns/op 496 B/op 12 allocs/op
|
103 | |
BenchmarkStructExceptSuccessParallel-8 10000000 153 ns/op 240 B/op 5 allocs/op
|
104 | |
BenchmarkStructExceptFailure-8 2000000 954 ns/op 464 B/op 10 allocs/op
|
105 | |
BenchmarkStructExceptFailureParallel-8 5000000 234 ns/op 464 B/op 10 allocs/op
|
106 | |
BenchmarkStructSimpleCrossFieldSuccess-8 3000000 420 ns/op 72 B/op 3 allocs/op
|
107 | |
BenchmarkStructSimpleCrossFieldSuccessParallel-8 10000000 125 ns/op 72 B/op 3 allocs/op
|
108 | |
BenchmarkStructSimpleCrossFieldFailure-8 2000000 790 ns/op 304 B/op 8 allocs/op
|
109 | |
BenchmarkStructSimpleCrossFieldFailureParallel-8 10000000 205 ns/op 304 B/op 8 allocs/op
|
110 | |
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 2000000 611 ns/op 80 B/op 4 allocs/op
|
111 | |
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 10000000 172 ns/op 80 B/op 4 allocs/op
|
112 | |
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 1000000 1112 ns/op 320 B/op 9 allocs/op
|
113 | |
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 5000000 258 ns/op 320 B/op 9 allocs/op
|
114 | |
BenchmarkStructSimpleSuccess-8 5000000 263 ns/op 0 B/op 0 allocs/op
|
115 | |
BenchmarkStructSimpleSuccessParallel-8 20000000 83.1 ns/op 0 B/op 0 allocs/op
|
116 | |
BenchmarkStructSimpleFailure-8 2000000 964 ns/op 424 B/op 9 allocs/op
|
117 | |
BenchmarkStructSimpleFailureParallel-8 10000000 212 ns/op 424 B/op 9 allocs/op
|
118 | |
BenchmarkStructComplexSuccess-8 1000000 1504 ns/op 128 B/op 8 allocs/op
|
119 | |
BenchmarkStructComplexSuccessParallel-8 3000000 427 ns/op 128 B/op 8 allocs/op
|
120 | |
BenchmarkStructComplexFailure-8 300000 7585 ns/op 3041 B/op 53 allocs/op
|
121 | |
BenchmarkStructComplexFailureParallel-8 1000000 1387 ns/op 3041 B/op 53 allocs/op
|
|
69 |
go test -bench=. -benchmem=true
|
|
70 |
BenchmarkFieldSuccess-8 20000000 87.2 ns/op 0 B/op 0 allocs/op
|
|
71 |
BenchmarkFieldSuccessParallel-8 50000000 26.1 ns/op 0 B/op 0 allocs/op
|
|
72 |
BenchmarkFieldFailure-8 5000000 299 ns/op 208 B/op 4 allocs/op
|
|
73 |
BenchmarkFieldFailureParallel-8 20000000 100 ns/op 208 B/op 4 allocs/op
|
|
74 |
BenchmarkFieldDiveSuccess-8 2000000 645 ns/op 201 B/op 11 allocs/op
|
|
75 |
BenchmarkFieldDiveSuccessParallel-8 10000000 198 ns/op 201 B/op 11 allocs/op
|
|
76 |
BenchmarkFieldDiveFailure-8 2000000 876 ns/op 412 B/op 16 allocs/op
|
|
77 |
BenchmarkFieldDiveFailureParallel-8 5000000 268 ns/op 413 B/op 16 allocs/op
|
|
78 |
BenchmarkFieldCustomTypeSuccess-8 10000000 228 ns/op 32 B/op 2 allocs/op
|
|
79 |
BenchmarkFieldCustomTypeSuccessParallel-8 20000000 70.0 ns/op 32 B/op 2 allocs/op
|
|
80 |
BenchmarkFieldCustomTypeFailure-8 5000000 286 ns/op 208 B/op 4 allocs/op
|
|
81 |
BenchmarkFieldCustomTypeFailureParallel-8 20000000 95.6 ns/op 208 B/op 4 allocs/op
|
|
82 |
BenchmarkFieldOrTagSuccess-8 2000000 857 ns/op 16 B/op 1 allocs/op
|
|
83 |
BenchmarkFieldOrTagSuccessParallel-8 3000000 397 ns/op 16 B/op 1 allocs/op
|
|
84 |
BenchmarkFieldOrTagFailure-8 3000000 495 ns/op 224 B/op 5 allocs/op
|
|
85 |
BenchmarkFieldOrTagFailureParallel-8 5000000 376 ns/op 224 B/op 5 allocs/op
|
|
86 |
BenchmarkStructLevelValidationSuccess-8 10000000 226 ns/op 32 B/op 2 allocs/op
|
|
87 |
BenchmarkStructLevelValidationSuccessParallel-8 20000000 68.4 ns/op 32 B/op 2 allocs/op
|
|
88 |
BenchmarkStructLevelValidationFailure-8 3000000 497 ns/op 304 B/op 8 allocs/op
|
|
89 |
BenchmarkStructLevelValidationFailureParallel-8 10000000 170 ns/op 304 B/op 8 allocs/op
|
|
90 |
BenchmarkStructSimpleCustomTypeSuccess-8 3000000 420 ns/op 32 B/op 2 allocs/op
|
|
91 |
BenchmarkStructSimpleCustomTypeSuccessParallel-8 20000000 124 ns/op 32 B/op 2 allocs/op
|
|
92 |
BenchmarkStructSimpleCustomTypeFailure-8 2000000 681 ns/op 424 B/op 9 allocs/op
|
|
93 |
BenchmarkStructSimpleCustomTypeFailureParallel-8 10000000 244 ns/op 440 B/op 10 allocs/op
|
|
94 |
BenchmarkStructFilteredSuccess-8 2000000 659 ns/op 288 B/op 9 allocs/op
|
|
95 |
BenchmarkStructFilteredSuccessParallel-8 10000000 211 ns/op 288 B/op 9 allocs/op
|
|
96 |
BenchmarkStructFilteredFailure-8 3000000 482 ns/op 256 B/op 7 allocs/op
|
|
97 |
BenchmarkStructFilteredFailureParallel-8 10000000 162 ns/op 256 B/op 7 allocs/op
|
|
98 |
BenchmarkStructPartialSuccess-8 3000000 564 ns/op 256 B/op 6 allocs/op
|
|
99 |
BenchmarkStructPartialSuccessParallel-8 10000000 180 ns/op 256 B/op 6 allocs/op
|
|
100 |
BenchmarkStructPartialFailure-8 2000000 779 ns/op 480 B/op 11 allocs/op
|
|
101 |
BenchmarkStructPartialFailureParallel-8 5000000 268 ns/op 480 B/op 11 allocs/op
|
|
102 |
BenchmarkStructExceptSuccess-8 2000000 879 ns/op 496 B/op 12 allocs/op
|
|
103 |
BenchmarkStructExceptSuccessParallel-8 10000000 163 ns/op 240 B/op 5 allocs/op
|
|
104 |
BenchmarkStructExceptFailure-8 2000000 734 ns/op 464 B/op 10 allocs/op
|
|
105 |
BenchmarkStructExceptFailureParallel-8 5000000 259 ns/op 464 B/op 10 allocs/op
|
|
106 |
BenchmarkStructSimpleCrossFieldSuccess-8 3000000 432 ns/op 72 B/op 3 allocs/op
|
|
107 |
BenchmarkStructSimpleCrossFieldSuccessParallel-8 10000000 129 ns/op 72 B/op 3 allocs/op
|
|
108 |
BenchmarkStructSimpleCrossFieldFailure-8 2000000 671 ns/op 304 B/op 8 allocs/op
|
|
109 |
BenchmarkStructSimpleCrossFieldFailureParallel-8 10000000 229 ns/op 304 B/op 8 allocs/op
|
|
110 |
BenchmarkStructSimpleCrossStructCrossFieldSuccess-8 2000000 628 ns/op 80 B/op 4 allocs/op
|
|
111 |
BenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-8 10000000 182 ns/op 80 B/op 4 allocs/op
|
|
112 |
BenchmarkStructSimpleCrossStructCrossFieldFailure-8 2000000 872 ns/op 320 B/op 9 allocs/op
|
|
113 |
BenchmarkStructSimpleCrossStructCrossFieldFailureParallel-8 5000000 267 ns/op 320 B/op 9 allocs/op
|
|
114 |
BenchmarkStructSimpleSuccess-8 5000000 274 ns/op 0 B/op 0 allocs/op
|
|
115 |
BenchmarkStructSimpleSuccessParallel-8 20000000 79.0 ns/op 0 B/op 0 allocs/op
|
|
116 |
BenchmarkStructSimpleFailure-8 2000000 647 ns/op 424 B/op 9 allocs/op
|
|
117 |
BenchmarkStructSimpleFailureParallel-8 10000000 224 ns/op 424 B/op 9 allocs/op
|
|
118 |
BenchmarkStructComplexSuccess-8 1000000 1557 ns/op 128 B/op 8 allocs/op
|
|
119 |
BenchmarkStructComplexSuccessParallel-8 3000000 473 ns/op 128 B/op 8 allocs/op
|
|
120 |
BenchmarkStructComplexFailure-8 300000 4373 ns/op 3041 B/op 53 allocs/op
|
|
121 |
BenchmarkStructComplexFailureParallel-8 1000000 1554 ns/op 3041 B/op 53 allocs/op
|
122 | 122 |
```
|
123 | 123 |
|
124 | 124 |
Complementary Software
|
|
127 | 127 |
Here is a list of software that complements using this library either pre or post validation.
|
128 | 128 |
|
129 | 129 |
* [form](https://github.com/go-playground/form) - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
|
130 | |
* [Conform](https://github.com/leebenson/conform) - Trims, sanitizes & scrubs data based on struct tags.
|
|
130 |
* [mold](https://github.com/go-playground/mold) - A general library to help modify or set data within data structures and other objects
|
131 | 131 |
|
132 | 132 |
How to Contribute
|
133 | 133 |
------
|