PillarOne.RiskAnalytics: First Profiling Results
Before starting to improve the performance of PillarOne.RiskAnalytics, we need to identify the run-time expensive parts. The first profiling session showed that the simulations don't have any memory leaks and the required time depends linearly on the number of iterations.
Therefore the computer's RAM and the available hardisk
space to store the simulation results are the only limits. You can
build and run PillarOne models as complex as the business context
requires - if it weren't for the impatience of the users ;-)
We identified the following areas for performance improvement:
- database persistence: The current way of persisting results to
the database is 25% slower than writing to a file (CapitalEagle,
collecting 3 key figures)
- composed or nested components are
a convenient way of structuring models. The profiling data revealed
that a model with composed component ExampleLob was 40% slower than an exactly
similar model without any composed components.
- random number generator: only 30% of the simulation runtime is used for business logic calculations and 60% of this 30% is consumed by the random number generators which was very surprising to me. Selecting an accurate random number generator from the SSJ library has its price.
We started this week with a refactoring of the first two points and will publish effective runtime improvement as soon as we are done.
Technical Background
We used the commercial Yourkit profiler and the profiler of NetBeanswhich is open source. Both of them allow to visually inspect number of methods calls and their duration.
--
Stefan Kunz

