Yesterday, Alex Muscar and I were chatting about the options and possibilities to use ABCL on GAE. It turns out that ABCL's startup gets triggered more often than we expected: instances of ABCL may get swapped out of memory or mapped to different servers, meaning ABCL needs to load all from scratch.
So, we were evaluating what options we have to optimize ABCL's startup time. As always, I want to base such a decision on facts, so I ran the profiler on ABCL's startup yesterday. The conclusion is that ~ 40 to 45% of our startup time is spent in "privateGetDeclaredConstructors()". This is due to loadCompiledFunction calling the class's newInstance() method.
That however, is the processing time spent. I'd love to be able to reduce it, but the function body delegates to a C/C++ function which means I can't fully understand its performance characteristics. Now, the other thing might be "I/O waiting time". Although the profiler measures "run time" and "wait time", I'm not sure how to deduce I/O wait time from that, or how to profile I/O times in another way.
If there is considerable I/O wait time, we could probably speed up ABCL's startup process without having to drastically change any design decisions.
Does anybody have any comments to that? Helpful remarks on how to find out about I/O wait time?
Bye,
Erik.