[Zope-dev] Re: [Interested?] New use for Zope+CMF+Archetypes -- startup time improvements

2005-05-27 Thread Dieter Maurer
Dieter Maurer wrote at 2005-5-13 19:26 +0200:
 ... high Zope startup time ...
To overcome this obstacle, we tweaked Zope and fixed Python's import
mechanism such that Zope now starts either out of a ZIP archive
or as a frozen application.
 ...
In more details, we did:

  *  implement a package for a new kind of urls pypackage:
 for package relative access to resources.

 The package monkey patches Python's open, os.listdir,
 os.stat to provide transparent access to
 pypackage: identified resources.

 It currently support package relative access for
 packages loaded from the file system, from a ZIP
 archive and from the executable itself (i.e. frozen packages).
 In the last case, the resources are in a separate ZIP
 archive.

 This package might be interesting for Python as a whole
 as it is not Zope specific.

I have now released this part as independent Python packages
dllimporter and packageresources.

You can find them via

http://www.dieter.handshake.de/pyprojects


In case, they should be included into Zope, I would give them
a dual license (my own BSD-like and ZPL).


-- 
Dieter
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )


[Zope-dev] Re: [Interested?] New use for Zope+CMF+Archetypes -- startup time improvements

2005-05-14 Thread Paul Everitt
This is really interesting!  A year ago I put Python + Zope on a USB 
key, just for fun.  It would barely fit so I looked at zip techniques, 
and never could figure out how to get ZPTs etc. to load from a ZIP.

How did you do that part?
--Paul
Dieter Maurer wrote:
Dear Zope developers,
we have used Zope+CMF+Archetypes in a new way -- not
as a Web Application framework but as a framework for
desktop applications that share a large part of their
functionality with online applications (implemented with Zope+CMF+Archetypes).
A major stumbling block has been Zope's incredibly high startup
time. We observerd times in the order of a minute on computers
with either slow CPU or slow IO. This may be acceptable for
a Web server but is prohibitive for a desktop application -- especially
as the predecessor application started within a few seconds.
To overcome this obstacle, we tweaked Zope and fixed Python's import
mechanism such that Zope now starts either out of a ZIP archive
or as a frozen application. These measures had the following results.
  Startup times on a mid range computer (AMD Athon 1.4 GHz; 512 MB memory)
  with a standard IDE disk.
Cold start  Warm start
(after computer startup)(most files in OS cache)
File system13s5s
ZIP archive 8s4s
Frozen  5s3s
In more details, we did:
  *  implement a package for a new kind of urls pypackage:
 for package relative access to resources.
 The package monkey patches Python's open, os.listdir,
 os.stat to provide transparent access to
 pypackage: identified resources.
 It currently support package relative access for
 packages loaded from the file system, from a ZIP
 archive and from the executable itself (i.e. frozen packages).
 In the last case, the resources are in a separate ZIP
 archive.
 This package might be interesting for Python as a whole
 as it is not Zope specific.
  *  implement a shared object importer to be used
 as a Python meta_path hook.
 This importer allows to load shared objects into the context
 of a parent package (such as e.g. ZODB.TimeStamp) although
 the shared object is not located inside the package's source
 (ZIP archive or executable).
  *  fix about 70 occurrences in Zope code where
 package relative access was implemented by dirname(__file__)
 to consistenty use package_home.
  *  modify about a dozen places in Zope+CMF to use
 pypackage: and cope with __path__ not being a list
 for frozen packages
  *  fix a few products (Archetypes and friends, TextIndexNG2,
 PlacelessTranslationService, ...) to use
 package_home (rather than dirname(__file__)) and
 not to change the current working directory (which obviously
 would fail for destinationsbe in a ZIP archive
 or the executable).
  *  implement lazy loading of ImageFiles to
 reduce the risk of recursive imports (and reduce startup time).
  *  support lazy product initialization
  *  support configuration from a pickle file (to avoid
 expensive parsing of the schema and configuration files).
 The pickle is used as a configuration cache.
  *  fixed Python's import mechanism not to treat ZIP
 archives as a directory when the archive could not
 find a module.
If you were *really* interested in these startup time improvements,
I could provide patches which might be integrated
in the Zope core for e.g. Zope 2.9.

___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )


[Zope-dev] Re: [Interested?] New use for Zope+CMF+Archetypes -- startup time improvements

2005-05-13 Thread Simon Michael
Go Dieter!
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Re: [Interested?] New use for Zope+CMF+Archetypes -- startup time improvements

2005-05-13 Thread Jens Vagelpohl
On May 14, 2005, at 02:10, Simon Michael wrote:
Go Dieter!
Hey Simon, Dieter isn't looking for a fan club, he is looking for  
champions in the right places to integrate his work so it benefits a  
wider audience!  ;)

jens
___
Zope-Dev maillist  -  Zope-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )