You've successfully subscribed to Better Data Science
Great! Next, complete checkout for full access to Better Data Science
Welcome back! You've successfully signed in
Success! Your account is fully activated, you now have access to all content.

Python is About to Become 64% Faster - Python 3.10 vs. Python 3.11 Benchmark

Python is About to Become 64% Faster - Python 3.10 vs. Python 3.11 Benchmark

Get excited about Python 3.11 - It's finally the time for significant performance improvements

It's no secret that Python isn't the fastest programming language out there. Well, that's about to change, or at least head in the right direction. The newest Python release - Python 3.11 - is expected to air in October 2022. What's even better is there's a release candidate (RC) version available for us to play around with.

That's exactly what we'll do today. We'll install Python 3.10 and 3.11 in separate Docker containers and see how they compare in a suite of benchmark tests. I plan to use the pyperformance package for the job, as it will do all the heavy lifting.

TL;DR - On average, Python 3.11 is 14% faster than Python 3.10. The new version is marginally slower on some benchmarks, but on the others, it's up to 64% faster. I ran the benchmarks on M1 Pro MacBook Pro 16 with a 10-core CPU. Each Python version was installed in Docker, which utilized 5 logical CPU cores. Your mileage may vary, but you should see similar results, relatively speaking.

Don't feel like reading? Watch my video instead:


How to Install Python 3.11 in Docker

If you want to follow along, you'll need Docker installed. It's a must-have tool in any data science tool belt, so it shouldn't be an issue. Once Docker is running, open two Terminal tabs.

In the first, we'll fetch and run Python 3.10 in the background:

docker run -t -d python:3.10.4-bullseye

And in the second we'll do the same thing but for Python 3.11:

docker run -t -d python:3.11-rc-bullseye

Docker will take some time to download and start both images, depending on your hardware configuration and Internet speed. Once done, you can open two Visual Studio Code windows and attach them to the Docker containers (Use the Docker VSCode extension, right-click on the image, and select "Attach Visual Studio Code"). Alternatively, you could also attach the shell only.

Once in the container, launch a new VSCode integrated Terminal and check the Python versions:

Image 1 - Python 3.10 and 3.11 containers attached in Visual Studio Code (image by author)
Image 1 - Python 3.10 and 3.11 containers attached in Visual Studio Code (image by author)

As you can see, I have Python 3.10 on the left and Python 3.11 on the right. Up next, we'll install the pyperformance package and run the benchmarks.


How to Run Python Benchmarks with PyPerformance

Okay, so we have both containers running and attached in VSCode. That was the hard part.

The next step is to install the pyperformance package. Run the following command in both containers:

python3 -m pip install pyperformance

Once installed, run the below shell command in the VSCode window attached to Python 3.10 container:

pyperformance run -o py310.json

And run a similar command in Python 3.11 container:

pyperformance run -o py311.json

These commands will run a suite of couple dozen benchmarks, so go grab a cup of coffee - it will take some time.

Image 2 - Running Python benchmarks on 3.10 and 3.11 in Docker (image by author)
Image 2 - Running Python benchmarks on 3.10 and 3.11 in Docker (image by author)

Once finished, pyperformance will save the output to py310.json and py311.json files, respectively:

Image 3 - Benchmark finished for both Python versions (image by author)
Image 3 - Benchmark finished for both Python versions (image by author) 

Each file is in a separate Docker container, so to actually compare the two, you'll have to download the JSON files to your local machine (or upload the file from one container to the other).

I've downloaded them both locally and installed the pyperformance package in a Python virtual environment. Let's see how they compare next.


Python 3.10 vs. Python 3.11 - Which One is Faster?

Preferably, you'll want to put both JSON files in the same folder. Open that folder in a Terminal window and run the following shell command:

pyperf compare_to py310.json py311.json --table

Here's the output:

Image 4 - Python 3.10 vs. 3.11 benchmark results (image by author)
Image 4 - Python 3.10 vs. 3.11 benchmark results (image by author)

I count five tests in which Python 3.10 was marginally faster than Python 3.11. In others, Python 3.11 was up to 64% faster than Python 3.10. According to the geometric mean, Python 3.11 is 14% faster than Python 3.10.


Summary of Python 3.10 vs. Python 3.11 Benchmarks

And there you have it - performance comparison between Python 3.10 and Python 3.11. It's worth noting that Python 3.11 still isn't out yet, so we're comparing a fully stable release with a release candidate. Maybe the gap will be even bigger between the two after the official release. Only time will tell.

What do you think about the upcoming Python release? Are you excited to see Python running faster, or you don't care at all? Let me know in the comment section below.

Stay connected