Plone 2.5 performance
We have blogged about performance before, after doing profiling for Plone 2.5 and during the Copenhagen Performance Sprint where we made experimental.contentcreation. Prior to experimental.contentcreation we made two Plone 2.5 products named factoryhack and contentmenu that are now available in the collective.
Performance improvements
First of all we'll take a look at what you'll get from these products by setting up some tests with jmeter. Each test is run 10 times after warming up 2 times. Neither of the tests were done on plain Plone, they have several add on products installed, and other factors that affect performance. The results can not be used as an absolute benchmark on Plone performance, but are useful for showing relative results with and without the optimizations.
The first test shows results for content creation. Listing is listing folder contents, Addform is showing the addform to add content in the folder, Create is pressing the save button and creating the content, and show is displaying the newly created content.
The second test is for a teamspace scenario. Teamspaces is viewing a listing of teamspaces, Teamspace is viewing one teamspace, Subfolder 1 is listing contents in a subfolder of Teamspace, and Subfolder 2 is another folder, parallell to Subfolder 1.
Install
If you want to try this for yourself, you can check out the products into your Products directory using command line svn or a client like TortoiseSVN:
svn co https://svn.plone.org/svn/collective/experimental.contentcreation/plone2.5/factoryhack factoryhack
svn co https://svn.plone.org/svn/collective/experimental.contentcreation/plone2.5/contentmenu contentmenu
Content menu then has to be installed in the install products control panel.
Technical
The technical details are covered pretty well in the two previous blog postings [1][2].
Factoryhack is mainly about optimizing the portal factory tool, but also the type listings. It is implemented as a monkey patch, meaning that it it automatically applies itself when Zope starts, and is completely gone as soon as you remove it from the Products directory.
Contentmenu is about improving the type listings further. It is installed in the control panel and provides a skin override. It does not alter the data in any way, and will be gone as soon as you uninstall in control panel and remove from Products directory.
Disclaimer
Note that the type listings are optimized by bypassing the regular security machinery and trying to emulate it in a more efficient way by gathering all local roles first, then check against roles required for adding content. This is working in production, but if you experience unexpected results in the add content dropdown after installing these products, you will have to uninstall them again. It does not affect actual create permissions, only the drop down menu that lists the types available. The worst that can happen is that you don't see all content types you are allowed to create, or get an error message because you are trying to add a content type without really being allowed to.
-- Helge