The https://speed.pypy.org site has been running the PyPy benchmark suite since 2010. Our first benchmarking machine was called tannit, and it faithfully ran the suite from May 2010 to Dec 2016. For a brief period in the middle we had a machine called speed-python, but tannit was the gold standard. In June 2016 we started running benchmarks on our current machine, benchmarker (Intel i7-7700). It has been graciously sponsored by Baroque Software. Based on an Ubuntu xenial chroot, the machine has been quite stable but over the years has had a few kernel exploits blocked in firmware that changed its base performance.
It is time to update. Rather than use the same machine with updated software, we decided to opt for different hardware. Since the beginning of May we have been running the benchmark suite on benchmarker2: an AMD Ryzen 5 3600 machine. In order to try to stabilize benchmarks the machine was set up:
cpuset to partition CPUs 3,4,5 off (the CPU has 2 CCD chiplets so the
CPU sets are truly independent, the reason we chose the Zen2 architecture)
and use them exclusively for benchmarkingIt runs debian13 as a base operating system, and the benchmarks run in a
manylinux2_28 docker, which provides gcc14.
In order to establish a baseline, I compiled CPython 3.11.5 with:
./configure --prefix=/opt/cpython-3.11 --enable-optimizations \ --with-computed-gotos --enable-shared LDFLAGS='-Wl,-rpath,\$$ORIGIN/../lib'
The difference between the two machines is striking: where the xenial image (with GCC 5.4) benchmark comparison to CPython 3.11.9 shows a 3x improvement when run on PyPy on benchmarker, the newer machine with the newer compiler and a fresh baseline shows a 4.3x improvement. I can only speculate that the major differences between the results is:
The last 3 points may affect PyPy more than CPython, since PyPy's JIT is more memory intensive and the RPython codegen may be handled better by newer compilers.
This is the first step in an overhaul of PyPy's infrastructure. Other plans in the pipeline:
manylinux_2014 to manylinux2_28-based
images. This will match the move on benchmarker2. It will require some
adaptations so that tests will pass on the newer compiler, see
pypy/pypy#5488. This will mean an ABI break,
so the next PyPy release will leave behind the 7.3.x series.Help of course is welcome.
Matti
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Pyre: New JIT Python interpreter written in Rust | 0 | 10 | 06-04-2026 |
| 2 | cinderx: High-Performance Python Runtime Extensions | 0 | 30 | 12-03-2026 |
| 3 | syrupy: The Sweeter pytest Snapshot Plugin | 0 | 10 | 03-04-2026 |
| 4 | PyWry: Cross-Platform Rendering Engine in Python | 0 | 26.67 | 03-05-2026 |
| 5 | py2many: Transpiler of Python to Many Other Languages | 0 | 22.5 | 05-03-2026 |
| 6 | Pyspread, a Spreadsheet in Python | 0 | 10 | 10-01-2026 |
| 7 | PyPy v7.3.22 | 0 | 10 | 06-05-2026 |
| 8 | pyStrich: 1D and 2D Barcode Generator Library | 0 | 10 | 18-07-2026 |
| 9 | flake8-lazy: Detect Lazy-Importable Modules in Python 3.15+ | 0 | 52.86 | 01-06-2026 |
| 10 | pytrendy: Trend Detection in Time Series Data | 0 | 10 | 20-06-2026 |