A week and a half of performance work

I am just back from an exhausting but very productive trip to Scotland and England, where I have been working hard on Orbeon Forms performance:

  • A lot of time was spent timing and profiling quite complex forms used by two of ours customers. We have gained interesting knowledge of where future improvements could be made.

  • We fixed long-standing memory leaks related to the XPath cache, XSLT, and the Scope processors in XPL. You may want to upgrade to a recent nightly, and certainly to the upcoming Orbeon Forms 3.6, just because of that. Thanks to YourKit we identified and fixed the issues quite rapidly.

  • We worked with Mike Kay, of XSLT and Saxon fame, on designing a new XPath dependency system which we plan to use for many UI-related optimizations, and later for XForms model-related optimizations as well. This promises to bring important performance improvements in the future, and that's maybe the most exciting part of this trip. See Mike's related blog entry, which also touches on the use of this system for document projection in XQuery.

  • We have made several optimizations which improve page loading time and memory consumption, including lazy evaluation of XForms controls' properties and improved instance replacement efficiency.

  • We have made progress towards improved caching of XForms documents. This also opens the door to more in-depth analysis of XForms documents, also with promises of future performance improvements.

  • We have confirmed with numbers that it makes sense to only let a limited number of threads at a time enter the Orbeon Forms servlet. This is one of those common sense ideas that keep having to be rediscovered and we'll touch on it in more details in a further post.

There is still a lot to be done regarding performance in Orbeon Forms. The obvious next step is to continue the work on the XPath dependency system now that the ground work has been done.