I am super excited about version 3.X of our product, not only because we managed to put more features and engines into the framework, but also because the amount of positive refactoring applied is amazing. We moved to .NET 4.0 and managed to remove some extra dependencies (e.g., FlexRule.Code.Expr.dll), and we introduced a better API, and much more…

I have more exciting news now. In the coming new version (3.3.3) we improved the performance of the framework significantly in different areas (i.e., first time execution (warm-up) and subsequent execution of rules in validation, procedural and flow engines). The average performance improvements are more than 30%.

In the speed measurement, we use the simple invoice application and Person validation rules that are available through the setup package. The computer we used to run them is an Intel core 2 dual CPU 2.5GHz with 4.00 GB RAM and 128 GB SSD HDD. In this test, we executed the same rules once for a warm-up and then ran them 10 more times.

To understand the improvements, we baselined with version 3.3.2, which is shown in the chart below for a warm-up call. Version 2.X onward to version 3.3.2 performance is similar to the result shown below.

Warm-up calls

This is the first time the rule gets executed. Improving the performance of warm-up calls are always more challenging, but we managed to improve the speed a lot, especially in the Flow engine.

Subsequent calls

For the subsequent calls to the engine (executing rules and logic) the chart below shows how the product version 3.3.2 (as our baseline) has performed:
Then after doing all the performance changes and refactoring, we improved the performance significantly in the coming version (3.3.3). And not only does it execute the rules and logic faster, but also the execution speed is highly consistent.

The result shown above excludes the first time (warm-up) execution of the rules and logic.

In general, I am very happy with the performance of the framework now. Not only is it as fast as when the code is written in pure programming language, but in some scenarios it is even faster than pure hard-coded rules because of the optimizations it applies to the rules and their relations when it executes rules and logic.

We are going to release version 3.3.3 in this week.

Last updated September 22nd, 2020 at 11:35 am, Published May 19th, 2013 at 11:35 am