----- Original Message ----- From: "Lukasz Skowronski" <[email protected]>
To: "XWiki Developers" <[email protected]> Sent: Thursday, November 19, 2009 4:54 PM Subject: [xwiki-devs] Velocity parsed template caching
Did you think about using StringResourceLoader (or something similar) instead of Velocity.evaluate()? I believe caching parsed ASTs rather than reparsing the same strings everytime could significantly improve overall performance.
I'm sending a patch that uses StringResourceLoader. It may need a little tweaking [1] but generally seems to work. I made the following test: 1. Start XWiki server with monitoring enabled 2. Go to /xwiki/bin/view/Blog/ ten times 3. Go to /xwiki/bin/view/XWiki/RequestsStatus .. and the results are ... ======== Original XWiki: ======== * Duration: 42780 ms * Requests: 21 * Average: 2037 ms * multipart duration: 10 ms Calls: 21 Requests: 21 Average: 0 ms * rendering duration: 10744 ms Calls: 563 Requests: 21 Average: 511 ms * hibernate duration: 5506 ms Calls: 374 Requests: 11 Average: 500 ms * prenotify duration: 0 ms Calls: 21 Requests: 21 Average: 0 ms * request duration: 42760 ms Calls: 21 Requests: 21 Average: 2036 ms * notify duration: 10 ms Calls: 21 Requests: 21 Average: 0 ms ======== With patch: ======== * Duration: 34543 ms * Requests: 21 * Average: 1644 ms * multipart duration: 0 ms Calls: 21 Requests: 21 Average: 0 ms * rendering duration: 10133 ms Calls: 563 Requests: 21 Average: 482 ms * hibernate duration: 5651 ms Calls: 374 Requests: 11 Average: 513 ms * prenotify duration: 0 ms Calls: 21 Requests: 21 Average: 0 ms * request duration: 34493 ms Calls: 21 Requests: 21 Average: 1642 ms * notify duration: 30 ms Calls: 21 Requests: 21 Average: 1 ms BTW what does request duration include apart from hibernate and rendering? Now I'm going to experiment with webapp loader cache. Kind regards Lukasz[1] I changed velocimacro.permissions.allow.inline.local.scope to false in order to properly run the blog app (the original one, I didn't upgraded it to 2.0 syntax yet). It might be necessary to somehow use the hack with rsvc.parse(source, templateName, false); but actually I'm not sure about it... At the moment I don't understand the difference between setting velocimacro.permissions.allow.inline.local.scope=false and using Da Hack... ;) It might be also good idea to set resource.manager.defaultcache.size=<some number>
VelocityCache_draft1.patch
Description: Binary data
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

