Plone speedup branch
Preface
Geoff Davis did some major speed increases on plone 2 based on the work of Alan Runyan. I added some patches, the capabilities to refresh files from the filesystem in non debug mode (which wasn't possible before) and a special skin custom folder which does autofreshing after an object has been added, removed or altered.
How I benchmarked zope
I'm using:
- Zope 2.7 CVS
- Plone CVS (speedup-branch and 2_0-branch)
- Python 2.3.3 (debian)
- apache benchmark (ab) 1.3d
- A P4 2.4GHz with 512 RAM and kernel 2.6 with debian testing as Zope server. I ran the tests under x because I was to lazy to stop all my programs
- A P3 1GHz with 256RAM and kernel 2.6 with debian testing as benchmark host. This computer is connected with a 100Mbit/sec full duplex line to the Zope server.
All version where the newest available version in debian or cvs on 2004/01/13.
I created a fresh instance for each test and compacted the zodb after each test. After creating the site I ran ab several times to allow zope to cache the data in ram and psyco (if enabled) to profile the code. Psyco needs some time before the code is optimized.
I started apache benchmark with this options:
ab -n100 -c5 http://host:10080/testsite/index_html
Which means 100 reqest with 5 concurrent request at the same time.
Timing tests with apache brenchmark
Normal mode
Old branch:
Time taken for tests: 23.904 seconds Percentage of the requests served within a certain time (ms) 50% 1051 66% 1261 75% 1315 80% 1355 90% 1415 95% 1503 98% 2027 99% 3824 100% 6919 (last request)
Speedup without psyco:
Time taken for tests: 20.712 seconds Percentage of the requests served within a certain time (ms) 50% 943 66% 989 75% 1140 80% 1307 90% 1434 95% 1484 98% 1529 99% 1582 100% 1768 (last request)
Speedup with psyco:
Time taken for tests: 18.816 seconds Percentage of the requests served within a certain time (ms) 50% 857 66% 952 75% 1035 80% 1124 90% 1242 95% 1320 98% 1391 99% 1416 100% 1478 (last request)
Speedup with psyco and PYTHONOPTIMIZE=1:
Time taken for tests: 18.492 seconds Percentage of the requests served within a certain time (ms) 50% 847 66% 961 75% 1039 80% 1080 90% 1186 95% 1302 98% 1366 99% 1372 100% 1375 (last request)
Debug mode
Old branch:
Time taken for tests: 31.254 seconds Percentage of the requests served within a certain time (ms) 50% 1478 66% 1581 75% 1694 80% 1837 90% 2004 95% 2055 98% 2133 99% 2140 100% 2547 (last request)
Speedup with psyco and PYTHONOPTIMIZE=1:
Time taken for tests: 21.575 seconds Percentage of the requests served within a certain time (ms) 50% 995 66% 1076 75% 1171 80% 1199 90% 1342 95% 1394 98% 1547 99% 1604 100% 1636 (last request)