ZF-3280: Zend_Server_XmlRpc_Cache - does not improve performance
Description
[From matthew@zend.com] -- David Goodwin david@palepurple.co.uk wrote (on Thursday, 15 May 2008, 10:43 PM +0100):
I've written a (relatively) small Zend_XmlRpc_Server service and I'm
pleased with the architecture of the code itself; however, I now need to
see if I can boost performance.The documentation [1] covers how the server definition can be cached
using Zend_XmlRpc_Server_Cache; unfortunately when I implemented this,
calling 1000 method calls goes from taking 1 minute 40s to 2m 40
seconds. Hardly a performance improvement!Has anyone else here used the Zend_XmlRpc_Server_Cache functionality,
and/or have any numbers to report back re "before and after"
implementing it?
Unfortunately, the server cache does not do what I intended it to when I originally coded it. The problem with performance is due to the fact that it must both re-instantiate objects as well as perform reflection on all of them -- but in reverse order (reflection objects are what are cached).
I would like to address this in the future; would you be willing to put an issue in the tracker, so it doesn't get lost, but also so that I can ping you about testing?
In the meantime, you have a couple of options:
- First, don't use the server cache
- Make sure you are using an opcode cache
- Consider setting up functionality to cache read-only methods, so that the XML-RPC server can be bypassed entirely for such calls.
Comments
Posted by Matthew Weier O'Phinney (matthew) on 2008-10-30T06:37:41.000+0000
Resolved in trunk. Usage remains the same. However, the server now stores the internal method mapping definition without requiring the Reflection objects used to generate it. This now nets a gain in performance when using Zend_XmlRpc_Server_Cache.
Posted by Wil Sinclair (wil) on 2008-11-13T14:10:05.000+0000
Changing issues in preparation for the 1.7.0 release.