QueryIndexMatching

com.netflix.atlas.core.index.QueryIndexMatching

Check to see how query index performs with simple queries based on index size. With similar test with real data using 17k alert expressions that decomposed into over 33k query expressions, the index was around 1000x faster for processing a metrics payload of 5000 datapoints. The loop took around 6 seconds and the index took around 6ms. The real dataset is slower mostly due to more regex being used in real queries and not being used in this synthetic data.

> jmh:run -prof stack -prof gc -wi 10 -i 10 -f1 -t1 .*QueryIndexMatching.*

Initial results:

Benchmark                         Mode  Cnt        Score        Error  Units
QueryIndexMatching.index_100     thrpt   10  1427970.545 ±  42632.895  ops/s
QueryIndexMatching.index_1000    thrpt   10  1337580.661 ± 113418.137  ops/s
QueryIndexMatching.index_10000   thrpt   10  1341069.994 ± 104992.441  ops/s
QueryIndexMatching.index_100000  thrpt   10  1290159.738 ±  76488.013  ops/s
QueryIndexMatching.loop_100      thrpt   10   714393.977 ±  26067.308  ops/s
QueryIndexMatching.loop_1000     thrpt   10    68317.877 ±   6006.013  ops/s
QueryIndexMatching.loop_10000    thrpt   10     3831.356 ±    454.029  ops/s
QueryIndexMatching.loop_100000   thrpt   10      375.074 ±     30.352  ops/s

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Value members

Concrete methods

def index_100(bh: Blackhole): Unit
def index_1000(bh: Blackhole): Unit
def index_10000(bh: Blackhole): Unit
def index_100000(bh: Blackhole): Unit
def index_smallmap_100000(bh: Blackhole): Unit
def loop_100(bh: Blackhole): Unit
def loop_1000(bh: Blackhole): Unit
def loop_10000(bh: Blackhole): Unit
def loop_100000(bh: Blackhole): Unit