<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-19026079.post3048255344252437218..comments</id><updated>2007-12-27T22:48:50.810+01:00</updated><title type='text'>Comments on ..: hannosch :..: Performance sprint warmup</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.hannosch.eu/feeds/3048255344252437218/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html'/><author><name>Hanno Schlichting</name><uri>http://www.blogger.com/profile/02880767944793425548</uri><email>hannosch@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19026079.post-197617183136091438</id><published>2007-12-27T22:48:00.000+01:00</published><updated>2007-12-27T22:48:00.000+01:00</updated><title type='text'>@Marius: Interesting work!A current Plone 4.0 / Zo...</title><content type='html'>@Marius: Interesting work!&lt;BR/&gt;&lt;BR/&gt;A current Plone 4.0 / Zope 2.11 instance needs 10 seconds to start up of which 2.5 seconds are spent parsing ZCML. This is the biggest block. Second is creating Archetypes schemas (lots of deepcopies of nested classes) and then already time spent on pure importing of Python files.&lt;BR/&gt;&lt;BR/&gt;I wonder if the time to execute the ZCML could be speed up by turning it into real Python bytecode instead of using the pickle protocol. We had some good results with this while working on a TAL to Python compiler (some prototype work based on Spitfire - http://code.google.com/p/spitfire/).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/197617183136091438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/197617183136091438'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1198792080000#c197617183136091438' title=''/><author><name>Hanno Schlichting</name><uri>http://www.blogger.com/profile/02880767944793425548</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13479045292802356879'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-19026079.post-1794123526487180805</id><published>2007-12-27T19:45:00.000+01:00</published><updated>2007-12-27T19:45:00.000+01:00</updated><title type='text'>Great improvements!How much time is spent parsing ...</title><content type='html'>Great improvements!&lt;BR/&gt;&lt;BR/&gt;How much time is spent parsing ZCML in Zope 2?&lt;BR/&gt;&lt;BR/&gt;At a recent Zope 3 sprint Stephan Richter and I &lt;A HREF="http://mg.pov.lt/blog/foliage-sprint-day-2.html" REL="nofollow"&gt;attempted to sidestep the ZCML parsing step altogether&lt;/A&gt; (using some nasty hacks to pickle the ZCML configuration actions).  Our prototype showed a potential ~33% reduction in Zope 3 startup time (from 3 seconds down to 2 seconds on a pretty new Thinkpad).&lt;BR/&gt;&lt;BR/&gt;My interest in this approach waned (I see little difference between 2 and 3 seconds -- both are either "fast enough" or "too slow"), but Stephan Richter was very enthusiastic and wanted to pursue it.  You might want to talk to him.&lt;BR/&gt;&lt;BR/&gt;I would also like to see the  speedup from switching to a  different XML parser.  lxml and cElementTree come to mind (one has a reputation of being fast, the other comes with Python 2.5).  While fast parsing is slower than no parsing at all, it would be much simpler to implement and maintain than ensuring all the ZCML configuration actions are safe to pickle.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/1794123526487180805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/1794123526487180805'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1198781100000#c1794123526487180805' title=''/><author><name>Marius</name><uri>http://www.blogger.com/profile/15155998626202067226</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-19026079.post-708079625921601789</id><published>2007-10-20T16:43:00.000+02:00</published><updated>2007-10-20T16:43:00.000+02:00</updated><title type='text'>For those interested in it, I found that five:impl...</title><content type='html'>For those interested in it, I found that five:implements in combination with fat Zope2 objects takes quite a bit of time. Moving two of those from Five's configure.zcml to the real classes made those actions about 75 times faster...&lt;BR/&gt;&lt;BR/&gt;The lazy page template behavior is now the default in Zope2.&lt;BR/&gt;&lt;BR/&gt;One more bottleneck I found was hidden in MimetypesRegistry where a 750KiB big XML file with mimetype information was parsed on each startup. I changed the code to create and load a binary format now instead, which safes another whole second on Zope startup...&lt;BR/&gt;&lt;BR/&gt;Let's see if there's more :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/708079625921601789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/708079625921601789'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1192891380000#c708079625921601789' title=''/><author><name>Hanno Schlichting</name><uri>http://www.blogger.com/profile/02880767944793425548</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13479045292802356879'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-19026079.post-7568488766874185717</id><published>2007-10-17T12:19:00.000+02:00</published><updated>2007-10-17T12:19:00.000+02:00</updated><title type='text'>You rock! Just imagine the amount of time plone de...</title><content type='html'>You rock! Just imagine the amount of time plone developers will save in aggregate.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/7568488766874185717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/7568488766874185717'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1192616340000#c7568488766874185717' title=''/><author><name>Laurence Rowe</name><uri>http://objectvibe.net/blog</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-19026079.post-1287325139470064197</id><published>2007-10-17T09:07:00.000+02:00</published><updated>2007-10-17T09:07:00.000+02:00</updated><title type='text'>@Philipp:I've already looked at zc.configuration, ...</title><content type='html'>@Philipp:&lt;BR/&gt;I've already looked at zc.configuration, but Plone and Five don't load much unneeded zcml. The whole zope.app.* packages aren't loaded for example.&lt;BR/&gt;&lt;BR/&gt;I'll try to port the lazy stuff to zope.pagetemplate as well, ones I made it configurable through a zope.conf option.&lt;BR/&gt;&lt;BR/&gt;The lazy message catalogs and the automatic mo file compilation are on my list for zope.i18n as well...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/1287325139470064197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/1287325139470064197'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1192604820000#c1287325139470064197' title=''/><author><name>Hanno Schlichting</name><uri>http://www.blogger.com/profile/02880767944793425548</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13479045292802356879'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-19026079.post-7171063899908727759</id><published>2007-10-17T06:42:00.000+02:00</published><updated>2007-10-17T06:42:00.000+02:00</updated><title type='text'>Speeding up ZCML would be greatly appreciated. I'm...</title><content type='html'>Speeding up ZCML would be greatly appreciated. I'm not so sure the problem is with the XML parser, but this can only be answered for sure by careful analysis.&lt;BR/&gt;&lt;BR/&gt;One low-hanging fruit is to go ahead and disable all the ZCML that you don't need using Jim's new package zc.configuration (http://pypi.python.org/pypi/zc.configuration). This was done for Grok at the Neanderthal sprint: http://svn.zope.org/grok/branches/neanderthal-startupspeed/ and produced a rough 10% speed increase by excluding a few trivial files.&lt;BR/&gt;&lt;BR/&gt;Nice catch with the PageTemplates, by the way. I wonder, could you forward-port this to zope.pagetemplate's PageTemplateFile, too?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/7171063899908727759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/7171063899908727759'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1192596120000#c7171063899908727759' title=''/><author><name>Philipp von Weitershausen</name><uri>http://worldcookery.com</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-19026079.post-8454747805393895511</id><published>2007-10-17T02:25:00.000+02:00</published><updated>2007-10-17T02:25:00.000+02:00</updated><title type='text'>Bravo, Hanno!</title><content type='html'>Bravo, Hanno!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/8454747805393895511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19026079/3048255344252437218/comments/default/8454747805393895511'/><link rel='alternate' type='text/html' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html?showComment=1192580700000#c8454747805393895511' title=''/><author><name>Jon Stahl</name><uri>http://www.blogger.com/profile/01965431267437542533</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.hannosch.eu/2007/10/performance-sprint-warmup.html' ref='tag:blogger.com,1999:blog-19026079.post-3048255344252437218' source='http://www.blogger.com/feeds/19026079/posts/default/3048255344252437218' type='text/html'/></entry></feed>