Details
-
Task
-
Status: Confirmed
-
Medium
-
Resolution: Unresolved
-
None
-
None
Description
We have a simple QueryPerformanceTest, but that covers only a single scenario and performs measurements in a rather unscientific way.
Add a proper JMH-based benchmark, which will cover a variety of queries on a variety of data. Each test case should be composed of static data, one test for query, one test for Binding-level equivalent code. A test case can also include alternative ways for querying the same result set – i.e. less-than-optimal queries. In cases where there is a selection of data from a Map, the test should be re-run with 10, 100, 1K, 10K, 100K and 1M items.
Query evaluation for each such test case should happen in two modes:
- stream-based short-circuit, i.e. 'find any node matching' is stream().findAny()
- full evaluation, i.e. 'find any node matching' is !getItems().isEmpty()