added float support and cleaner code
This commit is contained in:
parent
da12fce77a
commit
0ebcd6967b
5 changed files with 208 additions and 159 deletions
60
README.md
60
README.md
|
|
@ -35,12 +35,25 @@ var data = Filter{
|
|||
}
|
||||
```
|
||||
|
||||
### Struct fields
|
||||
|
||||
Supported struct field values are:
|
||||
|
||||
* int, int8, int16, int32, int64
|
||||
* float32, float64
|
||||
* string
|
||||
* bool
|
||||
|
||||
For nested structs:
|
||||
|
||||
* struct
|
||||
|
||||
### Filter logic
|
||||
|
||||
Supported logical matching:
|
||||
|
||||
* AND - all of the queries have to match
|
||||
* OR - only one query has to match
|
||||
* OR - only one query has to match
|
||||
* NOT - none of the queries have to match
|
||||
|
||||
### Explicit match
|
||||
|
|
@ -79,22 +92,31 @@ data = [{2str 42 true {s2 {2}}}]
|
|||
|
||||
```
|
||||
go test -cpu 1,2,4 --bench .
|
||||
BenchmarkFilterSimple 2000000 877 ns/op 432 B/op 12 allocs/op
|
||||
BenchmarkFilterSimple-2 2000000 865 ns/op 432 B/op 12 allocs/op
|
||||
BenchmarkFilterSimple-4 1000000 1713 ns/op 432 B/op 12 allocs/op
|
||||
BenchmarkFilterComplex 500000 3032 ns/op 672 B/op 48 allocs/op
|
||||
BenchmarkFilterComplex-2 500000 3100 ns/op 672 B/op 48 allocs/op
|
||||
BenchmarkFilterComplex-4 500000 6235 ns/op 672 B/op 48 allocs/op
|
||||
BenchmarkFilterComplexOr 500000 2649 ns/op 816 B/op 39 allocs/op
|
||||
BenchmarkFilterComplexOr-2 500000 2659 ns/op 816 B/op 39 allocs/op
|
||||
BenchmarkFilterComplexOr-4 500000 5548 ns/op 816 B/op 39 allocs/op
|
||||
BenchmarkGenericFilterSimple 500000 2340 ns/op 1200 B/op 24 allocs/op
|
||||
BenchmarkGenericFilterSimple-2 1000000 2307 ns/op 1200 B/op 24 allocs/op
|
||||
BenchmarkGenericFilterSimple-4 1000000 3615 ns/op 1200 B/op 24 allocs/op
|
||||
BenchmarkGenericFilterComplex 200000 7073 ns/op 1680 B/op 96 allocs/op
|
||||
BenchmarkGenericFilterComplex-2 200000 7598 ns/op 1680 B/op 96 allocs/op
|
||||
BenchmarkGenericFilterComplex-4 200000 10735 ns/op 1680 B/op 96 allocs/op
|
||||
BenchmarkGenericFilterComplexOr 200000 5406 ns/op 2456 B/op 61 allocs/op
|
||||
BenchmarkGenericFilterComplexOr-2 300000 5300 ns/op 2456 B/op 61 allocs/op
|
||||
BenchmarkGenericFilterComplexOr-4 200000 7707 ns/op 2456 B/op 61 allocs/op
|
||||
BenchmarkNewQuerySimple 3000000 401 ns/op 176 B/op 7 allocs/op
|
||||
BenchmarkNewQuerySimple-2 5000000 390 ns/op 176 B/op 7 allocs/op
|
||||
BenchmarkNewQuerySimple-4 2000000 792 ns/op 176 B/op 7 allocs/op
|
||||
BenchmarkNewQueryComplex 1000000 1416 ns/op 656 B/op 17 allocs/op
|
||||
BenchmarkNewQueryComplex-2 1000000 1384 ns/op 656 B/op 17 allocs/op
|
||||
BenchmarkNewQueryComplex-4 1000000 2488 ns/op 656 B/op 17 allocs/op
|
||||
BenchmarkNewQueryComplexOr 1000000 1192 ns/op 640 B/op 17 allocs/op
|
||||
BenchmarkNewQueryComplexOr-2 1000000 1158 ns/op 640 B/op 17 allocs/op
|
||||
BenchmarkNewQueryComplexOr-4 1000000 1963 ns/op 640 B/op 17 allocs/op
|
||||
BenchmarkFilterSimple 2000000 907 ns/op 432 B/op 12 allocs/op
|
||||
BenchmarkFilterSimple-2 2000000 899 ns/op 432 B/op 12 allocs/op
|
||||
BenchmarkFilterSimple-4 1000000 1468 ns/op 432 B/op 12 allocs/op
|
||||
BenchmarkFilterComplex 500000 3129 ns/op 672 B/op 48 allocs/op
|
||||
BenchmarkFilterComplex-2 500000 3208 ns/op 672 B/op 48 allocs/op
|
||||
BenchmarkFilterComplex-4 500000 6644 ns/op 672 B/op 48 allocs/op
|
||||
BenchmarkFilterComplexOr 500000 2698 ns/op 816 B/op 39 allocs/op
|
||||
BenchmarkFilterComplexOr-2 500000 2832 ns/op 816 B/op 39 allocs/op
|
||||
BenchmarkFilterComplexOr-4 500000 5509 ns/op 816 B/op 39 allocs/op
|
||||
BenchmarkGenericFilterSimple 500000 2386 ns/op 1200 B/op 24 allocs/op
|
||||
BenchmarkGenericFilterSimple-2 1000000 2360 ns/op 1200 B/op 24 allocs/op
|
||||
BenchmarkGenericFilterSimple-4 1000000 3656 ns/op 1200 B/op 24 allocs/op
|
||||
BenchmarkGenericFilterComplex 200000 7178 ns/op 1680 B/op 96 allocs/op
|
||||
BenchmarkGenericFilterComplex-2 200000 7102 ns/op 1680 B/op 96 allocs/op
|
||||
BenchmarkGenericFilterComplex-4 200000 12602 ns/op 1680 B/op 96 allocs/op
|
||||
BenchmarkGenericFilterComplexOr 200000 5454 ns/op 2456 B/op 61 allocs/op
|
||||
BenchmarkGenericFilterComplexOr-2 300000 5444 ns/op 2456 B/op 61 allocs/op
|
||||
BenchmarkGenericFilterComplexOr-4 300000 9970 ns/op 2456 B/op 61 allocs/op
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue