my application's performance statistics
Hi Christian,
I did some performance statistics on my application and something caught my eye, which I hope you can shed some light on.
I found that when running the application the distribution of the life-cycle fases: Parsing, Compiling, Evaluating and Printing, is: Parsing : 95%, Compiling : 4%, Evaluating : 0.4% and Printing : 0.03% .
My development-paradigm is maintainability and not as much as performance optimization. So I expect is a lot of code-optimization during parsing and therefore a relatively high amount of time consumed for parsing. This is confirmed by the relatively low amount of time for the Compiling- and Evaluating-time. Code-optimization actually is a strong point of the parser. However I had expected/hoped that this code-optimization only occurs at the first run and that the optimized code is kept for following runs. This does not seem to be the case.
First of all: am I correct in my analysis? Secondly, can you give me any advise on improving the parsing-time, not being giving up on my development-paradigm, based on these stats?
Some more stats: The info-view gives for the compiling -fase a total of 2124 lines of which: - Inline …… 923 lines - Remove type check …. 710 lines - Simplify FLWOR …. 218 lines - Rewrite … 150 lines - Unroll …. 12 lines - Merge: concat ….. 11 lines - Open database … 3 lines - Swap operant … 1 lines - Simplify catch * …. 4 lines -
Thnx in advance for your reply.
Rob Stapper
Sent from Mail for Windows
Hi Rob,
Quoted text · Rob Stapper · 3 lines
I found that when running the application the distribution of the > life-cycle fases: Parsing, Compiling, Evaluating and Printing, is: >
What’s the total execution time?
Quoted text · Rob Stapper · 3 lines
> However I had expected/hoped that this code-optimization only occurs at > the first run and that the optimized code is kept for following runs. >
We may cache compiled expressions in a future version of BaseX.
Quoted text · Rob Stapper · 4 lines
First of all: am I correct in my analysis? Secondly, can you give me any > advise on improving the parsing-time, not being giving up on my > development-paradigm, based on these stats? >
Possibly yes. A general recommendation for complex code is to reduce the inline limit [1]. In some cases, your code will even be faster if you disable the feature completely (by assigning 0). You could also reduce the UNROLLLIMIT.
Hope this helps, Christian
Written for BaseX 9.6. BaseX may have changed since: please check the current documentation.