Tres Seaver wrote:
[...] Within the WorkflowTool, worklists are by far the most expensive Actions.
... because they involve catalog queries. We could perhaps optimize that query via a dedicated TopicIndex for the 'review_state' portion.
Sounds like a good idea. I guess the news box could also benefit from a TopicIndex.
On the other hand there are other issues with worklists:
- They are defined per workflow, but are often not workflow specific. This leads to duplicate worklists and removing the duplicates makes workflow definitions depend on each other.
- They are the most complex Actions and I'm afraid most of its features are YAGNI.
Maybe instead of using Actions CMFDefault should have a box like the news box to show worklists?
- The MembershipTool has ridiculously expensive expressions for its actions. I added two new top-level names to the Expression namespace, 'member_folder' and 'member_url', which made the expressions both cheaper (the bypass some redundant security checking) and simpler (therefore cheaper as well).
Looks like a trade-off: If the site uses member folders the related Actions are cheaper. But if not, computing these values is waste of time.
- The action providers all manufacture their own expression contexts, which might be a hotspot.
Sorry for the confusing implementation. But the fact expression contexts are not passed to the action providers does not mean they are manufactured again and again. getExprContext() calls createExprContext() only once and caches the result.
BTW: Just in case you want to work on ActionInformation.ActionInfo: The CMF HEAD version of ActionInfo is quite different, using a new Action interface. Maybe those changes should be backported to CMF 1.5 before you try to optimize the 1.5 code.
_______________________________________________ Zope-CMF maillist - Zope-CMF@lists.zope.org http://mail.zope.org/mailman/listinfo/zope-cmf
See http://collector.zope.org/CMF for bug reports and feature requests