camunda/feel-scala

Significant performance degradation of expressions' evaluation switching from 1.16 to 1.17

eugene-furs opened this issue ยท 2 comments

Describe the bug
After switching FEEL implementation from 1.16 to 1.17 it has been observed that performance of expressions' evaluation significantly degraded. In our test case with 6 million evaluations (6 expressions 1 million times each) the performance became about 6 times slower for not pre-parsed expressions and 12 times slower for pre-parsed expressions.

To Reproduce
Steps to reproduce the behavior (our test case setup):

  1. Prepare 6 FEEL expressions to be evaluated on provided context
  2. Generate 1000 contexts (Map<String, Object> in our case)
  3. 1000 times: evaluate each expression for each context and measure time of overall evaluation running the test with FEEL 1.16 and 1.17

Alternatively the attached test code can be used switching FEEL versions in pom.xml.
FEEL-Perf.zip

Expected behavior
About the same performance of expressions' evaluation or reasonable low performance degradation

Environment

  • FEEL engine version: [1.17.5] versus [1.16.1]
  • Affects:
    • Custom software solution using feel-scala library

@eugene-furs thank you for raising this and making it easy to reproduce. ๐Ÿ‘

Currently, the performance of the FEEL engine is not our highest priority. However, I will have a look and try to confirm the results (using my benchmark project https://github.com/saig0/feel-scala-jmh).

Everyone is welcome to find and fix performance issues. ๐Ÿš€

I can confirm the performance degradation from 1.16 to 1.17. โœ”๏ธ The evaluation is 10 to 100 times slower than before (ref). ๐ŸŒ