aws / event-ruler

Event Ruler is a Java library that allows matching many thousands of Events per second to any number of expressive and sophisticated rules.
Apache License 2.0
566 stars 63 forks source link

Support for prefix/equals-ignore-case and suffix/equals-ignore-case #121

Closed rogeriosy closed 11 months ago

rogeriosy commented 11 months ago

Issue #, if available: https://github.com/aws/event-ruler/issues/108

Description of changes:

Benchmark / Performance (for source code changes):

From my mac laptop (2.6 GHz 6-Core Intel Core i7 / 16 GB 2667 MHz DDR4):

Reading citylots2
Read 213068 events
EXACT events/sec: 193346.6
WILDCARD events/sec: 135281.3
PREFIX events/sec: 204088.1
PREFIX_EQUALS_IGNORE_CASE_RULES events/sec: 206461.2
SUFFIX events/sec: 208890.2
SUFFIX_EQUALS_IGNORE_CASE_RULES events/sec: 218980.5
EQUALS_IGNORE_CASE events/sec: 193874.4
NUMERIC events/sec: 128199.8
ANYTHING-BUT events/sec: 134853.2
ANYTHING-BUT-IGNORE-CASE events/sec: 135195.4
ANYTHING-BUT-PREFIX events/sec: 147861.2
ANYTHING-BUT-SUFFIX events/sec: 145240.6
COMPLEX_ARRAYS events/sec: 36521.8
PARTIAL_COMBO events/sec: 53845.8
COMBO events/sec: 19746.8

From the Github benchmark:

Java 8:

Reading citylots2
Read 213068 events
EXACT events/sec: 120445.4
WILDCARD events/sec: 91210.6
PREFIX events/sec: 123374.6
PREFIX_EQUALS_IGNORE_CASE_RULES events/sec: 124383.0
SUFFIX events/sec: 118436.9
SUFFIX_EQUALS_IGNORE_CASE_RULES events/sec: 118305.4
EQUALS_IGNORE_CASE events/sec: 115484.0
NUMERIC events/sec: 83327.3
ANYTHING-BUT events/sec: 77875.7
ANYTHING-BUT-IGNORE-CASE events/sec: 76259.1
ANYTHING-BUT-PREFIX events/sec: 85261.3
ANYTHING-BUT-SUFFIX events/sec: 87287.2
COMPLEX_ARRAYS events/sec: 20178.8
PARTIAL_COMBO events/sec: 35235.3
COMBO events/sec: 13567.8

Java 11:

Reading citylots2
Read 213068 events
EXACT events/sec: 190579.6
WILDCARD events/sec: 129919.5
PREFIX events/sec: 188389.0
PREFIX_EQUALS_IGNORE_CASE_RULES events/sec: 186901.8
SUFFIX events/sec: 177704.8
SUFFIX_EQUALS_IGNORE_CASE_RULES events/sec: 181488.9
EQUALS_IGNORE_CASE events/sec: 161537.5
NUMERIC events/sec: 103884.9
ANYTHING-BUT events/sec: 101171.9
ANYTHING-BUT-IGNORE-CASE events/sec: 100125.9
ANYTHING-BUT-PREFIX events/sec: 109265.6
ANYTHING-BUT-SUFFIX events/sec: 112141.1
COMPLEX_ARRAYS events/sec: 24646.4
PARTIAL_COMBO events/sec: 42300.6
COMBO events/sec: 16163.6

Java 17:

Reading citylots2
Read 213068 events
EXACT events/sec: 190750.2
WILDCARD events/sec: 119970.7
PREFIX events/sec: 187559.9
PREFIX_EQUALS_IGNORE_CASE_RULES events/sec: 188389.0
SUFFIX events/sec: 184634.3
SUFFIX_EQUALS_IGNORE_CASE_RULES events/sec: 184314.9
EQUALS_IGNORE_CASE events/sec: 163270.5
NUMERIC events/sec: 102338.1
ANYTHING-BUT events/sec: 103986.3
ANYTHING-BUT-IGNORE-CASE events/sec: 104138.8
ANYTHING-BUT-PREFIX events/sec: 116050.1
ANYTHING-BUT-SUFFIX events/sec: 117006.0
COMPLEX_ARRAYS events/sec: 26967.2
PARTIAL_COMBO events/sec: 43572.2
COMBO events/sec: 18196.9

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.