|
Release2009Q1
Details on the 2009Q1 release
Unladen Swallow 2009Q1The first release. Unladen Swallow 2009Q1 is based on CPython 2.6.1. This release is primarily a collection of tweaks to 2.6.1, many of which are now available in mainline Python trunk. What are not currently available are in the process of being pushed upstream. PerformanceWe recommend building Unladen Swallow with 64-bit mode for maximum performance. The following timings are comparing virgin Python 2.6.1 against Unladen Swallow 2009Q1 in 64-bit mode. Compiled with gcc 4.3.1 on Intel Core 2 Duo machines. See the Benchmarks page for a description of each benchmark below. If you have access to gcc 4.4, we highly recommend using the FDO support (via -fprofile-generate and -fprofile-use). We have found that training it on 2to3, Django and SlowSpitfire (via test.py) adds additional 10-30% percent performance, depending on the benchmark. We have not included those improvements in our results since gcc 4.4 is not widely available; FDO is available in earlier versions of gcc, but is not as easy to use. Note on the benchmark names: the SlowFoo benchmarks are pure-Python versions. So SlowPickle is a pure-Python version of Pickle, which uses the cPickle module. The performance improvements are calculated using ((new - old) / new). We feel this is a better representation of performance improvements than ((new - old) / old); you can see the difference with old=100 and new=5 then new=2. 2to3: Django: Pickle (complex): Pickle (simple): PyBench: SlowPickle: SlowSpitfire: SlowUnpickle: Unpickle (complex): Unpickle (simple): Feedback-Directed OptimizationThis table summarizes the benefits we saw from using gcc 4.4's feedback-directed optimizations to improve Python performance. We experimented with a number of training loads. Both training and measurement was done with perf.py --rigorous. We observed similar benefits across both 32-bit and 64-bit Python. In these charts, the columns indicate the training loads (SlowFoo means all the "slow" benchmarks: SlowSpitfire, SlowPickle, SlowUnpickle). "MEAN-PYBENCH-C" indicates the mean of the benchmarks if PyBench and the cPickle benchmarks are excluded. The percentage values are improvements over the baseline; negative numbers indicate performance regressions.
The results above, removing PyBench and any benchmarks that stress C-language extension modules.
|
Sign in to add a comment