GraalPy , PyPy und (C)Python im kurzen Geschwindigkeitstest

Python
PyPy
GraalPython
GraalPy
Speedtest
Autor:in

Norman Markgraf

Veröffentlichungsdatum

8. April 2021

Geändert

4. Dezember 2025

Kleiner Geschwindigkeitstest mit Python3, PyPy und GraalPython

Heute habe ich mit Hilfe von Pyenv einen kompakten Performance-Vergleich zwischen (C)Python3, PyPy und GraalPython durchgeführt.

Als Testfall diente das klassische n-Damen-Problem, dessen Lösungsalgorithmus ich als Basis verwendet habe.

Den Quellcode findet man hier: https://github.com/sol-prog/N-Queens-Puzzle

Die Ergebnisse des Test vom 8.4.2021

  • CPython (3.9.4): Calculation took 316.97 seconds
  • PyPy (3.7-7.3.3): Calculation took 10.14 seconds
  • GraalPython (21.0.0): Calculation took 15.75 seconds

Neues Setup

Die Ergebnisse für n = 1 wurden mit der Zeile

python -m timeit -r 50 -n 1 ‘import nqueens; nqueens.main()

erzeugt.

Die Ergebnisse des Test vom 20.7.2025

  • CPython:
    • 3.13.1: 1 loop, best of 50: 673 msec per loop
    • 3.13.5: 1 loop, best of 50: 661 msec per loop
  • PyPy:
    • 3.10-7.3.17: 1 loops, average of 50: 75.6 +- 2.9 msec per loop (using standard deviation)
    • 3.11-7.3.19: 1 loops, average of 50: 74.9 +- 2.89 msec per loop (using standard deviation)
  • GraalPython/GraalPy
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.1.1):1 loop, best of 50: 24.9 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.1.1): 1 loop, best of 50: 30 msec per loop
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.2.1): 1 loop, best of 50: 24.5 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.2.1): 1 loop, best of 50: 28.1 msec per loop

Neues Setup

Die Ergebnisse für n = 5 wurden mit der Zeile

python -m timeit -r 50 -n 1 ‘import nqueens; nqueens.main()

erzeugt.

Die Ergebnisse des Test vom 4.12.2025 (iMac 24.6.0 x86_64 i386)

  • CPython:
    • Python 3.13.5: 5 loops, best of 50: 656 msec per loop
    • Python 3.13.10: 5 loops, best of 50: 647 msec per loop
    • Python 3.14.0: 5 loops, best of 50: 665 msec per loop
    • Python 3.14.1: 5 loops, best of 50: 701 msec per loop
  • PyPy:
    • Python 3.11.11 (0253c85bf5f8, Feb 26 2025, 10:43:06) [PyPy 7.3.19 with GCC Apple LLVM 15.0.0 (clang-1500.3.9.4)]: 5 loops, average of 50: 85.7 +- 2.08 msec per loop (using standard deviation)
    • Python 3.11.13 (413c9b7f57f5, Jul 03 2025, 18:04:31) [PyPy 7.3.20 with GCC Apple LLVM 16.0.0 (clang-1600.0.26.6)]: 5 loops, average of 50: 87.6 +- 3.06 msec per loop (using standard deviation)
  • GraalPy(thon):
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.1.1): 5 loops, best of 50: 25.5 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.1.1): 5 loops, best of 50: 33.6 msec per loop
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.2.1): 5 loops, best of 50: 24.4 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.2.1): 5 loops, best of 50: 32.2 msec per loop
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.2.2): 5 loops, best of 50: 24.4 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.2.2): 5 loops, best of 50: 32.3 msec per loop
    • GraalPy 3.12.8 (Oracle GraalVM Native 25.0.1): 5 loops, best of 50: 23.6 msec per loop
    • GraalPy 3.12.8 (GraalVM CE Native 25.0.1): 5 loops, best of 50: 29.6 msec per loop

Die Ergebnisse des Test vom 4.12.2025 (MacBookPro 24.6.0 arm64 arm)

  • CPython:
    • Python 3.13.5: 5 loops, best of 50: 661 msec per loop
    • Python 3.13.10: 5 loops, best of 50: 653 msec per loop
    • Python 3.14.0: 5 loops, best of 50: 469 msec per loop
    • Python 3.14.1: 5 loops, best of 50: 469 msec per loop
  • PyPy:
    • Python 3.11.11 (0253c85bf5f8, Feb 26 2025, 10:42:49) [PyPy 7.3.19 with GCC Apple LLVM 15.0.0 (clang-1500.3.9.4)]: 5 loops, average of 50: 74.2 +- 0.681 msec per loop (using standard deviation)
    • Python 3.11.13 (413c9b7f57f5, Jul 03 2025, 18:04:06) [PyPy 7.3.20 with GCC Apple LLVM 16.0.0 (clang-1600.0.26.6)]: 5 loops, average of 50: 73.3 +- 0.688 msec per loop (using standard deviation)
  • GraalPy(thon):
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.1.1): 5 loops, best of 50: 24.9 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.1.1): 5 loops, best of 50: 29.1 msec per loop
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.2.1): 5 loops, best of 50: 23.6 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.2.1): 5 loops, best of 50: 27.3 msec per loop
    • GraalPy 3.11.7 (Oracle GraalVM Native 24.2.2): 5 loops, best of 50: 23.6 msec per loop
    • GraalPy 3.11.7 (GraalVM CE Native 24.2.2): 5 loops, best of 50: 27.2 msec per loop
    • GraalPy 3.12.8 (Oracle GraalVM Native 25.0.1): 5 loops, best of 50: 23.6 msec per loop
    • GraalPy 3.12.8 (GraalVM CE Native 25.0.1): 5 loops, best of 50: 24.9 msec per loop