Is Python Fast Enough?
For everything but super heavy number crunching, I think Python is "fast enough". I have nothing nice as a whitepaper to provide, but here's some pertinent information:
- Zope is written about 98% in Python. The rest is C.
- Most pages served by Zope are generated dynamically. If you're not generating dynamic HTML, you don't need Zope.
- a simple "hello world" page generated by Zope can render itself anywhere from 50 - 120 times per second on current-standard Intel hardware.
- a typical highly dynamic Zope application can be expected to provide reasonable service at a rate of between 10 - 30 pageviews per second per machine on today's Intel hardware.
- page-generation can be arbitrarily complex (and thus arbitrarily expensive), so it's a big win to put Zope behind a caching proxy in production. Zope has cache management facilities built in to it for this purpose.
- Zope provides object persistence via the Zope Object Database (ZODB). The ZODB is a high-level persistence system that makes it easy to save and retrieve object state without marshalling into and unmarshalling from relational storage data structures. Zope can also make use of relational databases, of course.
- Zope scales through the use of ZEO, a distributed version of the ZODB. It allows many machines to share an object namespace. ZEO scales linearly for read-only traffic up to at least seven processes (we haven't tested more). It's not uncommon to have clusters of 14 or 20 ZEO clients all serving the same application frontended by a cache farm and a load balancer.
Someone posted some benchmarks against Apache's Tomcat here: http://www.zope.org/Members/BwanaZulia/zope_benchmarks .
Here are some other benchmarks "vs" Apache and AOLServer: http://weblogs.userland.com/qube/2000/06/26. Zope can coexist peacefully with either (using them as a frontend).
Here's some other benchmarks on Sun hardware: http://phd.pp.ru/Software/Zope/ab/ .
I have no idea whether any of these benchmarks are repeatable.