Hi!

I've run a benchmark loading 725 framework class files on 5.2 and 5.3 with and without bytecode caching.
The benchmark uses list of 725 Framework classes and loads them one by
one, via require_once and via Zend_Loader::loadClass. You can see the
files here: http://random-bits-of.info/fw-tests/

OK, so here's the results:

Without bytecode cache:
         require_once Zend_Loader
php5.2        4.42      4.42
php5.3        4.96      4.97

With bytecode cache:
         require_once Zend_Loader
php5.2        63.04     56.62
php5.3        61.28     55.52

Numbers are requests per second (more is better). Bytecode cache used in
the benchmark is Zend's one, not APC.

Conclusions from this would be:
0. It is *very* important to understand that it is a narrow-point
benchmark that tests only one function in one specific way. Please do
not draw conclusions on behavior of whole applications based only on
this benchmark.

1. You *do* want to use bytecode caching. You won't get 15x performance
on any real application, but it does speed up loading very significantly.

2. Without bytecode caching, it doesn't matter if you use require_once
or Loader - both are equally slow :)

3. With bytecode caching, Loader has some overhead - explanation for
this is that with file accesses eliminated, require_once of course has
little left, while Loader still does a couple of function
calls. But on real-life apps it'd probably be very small, provided that
it's about 10% even on loading-only huge-class-list benchmark, and your
application probably does something useful instead of loading 700+
framework classes :)

4. 5.3 is still a moving target, to don't put too much stake in current
benchmark results for 5.3, they probably will be different by the time
5.3 is in release cycle (hopefully, better :)

If you have more questions on this, please ask.
--
Stanislav Malyshev, Zend Software Architect
[EMAIL PROTECTED]   http://www.zend.com/
(408)253-8829   MSN: [EMAIL PROTECTED]



Reply via email to