Diversity w polskim IT
Maciej Olanicki
Maciej OlanickiRedakcja Bulldogjob

Python 3.11 zamknie usta krytykom? Wzrosty wydajności do 60%

Pythonowi wielokrotnie zarzucona była ociężałość. Wiemy już jednak, że nadchodzący Python 3.11 może w tej kwestii bardzo dużo zmienić.
8.07.20222 min
Python 3.11 zamknie usta krytykom? Wzrosty wydajności do 60%

Python 3.11 może się okazać jedną najbardziej chwalonych wydań tego języka ostatnich lat. Nie należy jednak oczekiwać, że następujące po sobie wersje z tej samej gałęzi będą wnosiły jakieś rozbudowane i zagrażające wstecznej kompatybilności zmiany funkcjonalne. Python 3.11 jest bowiem chwalony przede wszystkim za optymalizacje, które bezpośrednio przełożyły się na wzrosty wydajności. 

Python szybszy średnio o 25%

Według pomiarów dokonanych z użyciem benchmarku pyperformance standardowa implementacja Pythona 3.11 w C jest średnio o 25% szybsza niż 3.10. Platformą testową było Ubuntu, zaś kompilacja odbywała się z użyciem GCC. To jednak nie koniec dobrych wieści. Jak bowiem wskazano, przyśpieszenie aż o 25% to średni uzyskany w benchmarku wzrost wydajności, przy czym w niektórych przypadkach wzrosty mogą sięgnąć nawet 60%.

Dokonano tego przede wszystkim dzięki optymalizacji rozruchu – wprowadzono usprawnienia w mechanizmie przechowywania kodu bajtowego w lokalizacji __pycache__, który przekłada się na szybsze ładowanie modułów. W wersji 3.11 rdzenne moduły mają być „zamrożone”, tj. obiekty i kod bajtowy są statycznie alokowane w cache przez interpreter. Już to przełożyło się na przyśpieszenie jego rozruchu o 10-15%.

Kolejne zmiany dotyczą ramek tworzonych podczas wywoływania funkcji, a które przechowują praktycznie wszystkie zmienne lokalne dla tej funkcji i inne informacje na temat wykonywania. W Pythonie 3.11 ujednolicono proces ich tworzenia i rozwiązano problemy związane z alokacją pamięci. Ponadto wyeliminowano sytuacje, gdzie konieczne było wywoływanie funkcji C w celu interpretacji kodu w Pythonie. 

Jednym z najważniejszych elementów omawianych innowacji ma być mechanizm specjalizacji interpretera. Jest on powiązany ze stabilnością typów w Pythonie – po uruchomieniu kodu wyszukiwane są wspólne wzorce stabilności typów, ale odtąd operacja na kodzie wykonywanym wiele razy będzie zastępowana tzw. specjalizacją. Ta ma pozwolić na wykorzystanie szybkich ścieżek dostępu charakterystycznych dla danych typów. Więcej na ten temat w dokumentacji.

Python 3.11 – najlepsza wersja od lat?

Informacje o znacznych wzrostach wydajności w Pythonie potwierdzają niezależni eksperci, na czele z Michaelem Larabelem znanym z przeprowadzania światowej klasy standaryzowanych, wręcz laboratoryjnych, niezależnych testów wydajności zarówno sprzętu, jak i oprogramowania. Larabel nie ma wątpliwości, że różnice w stosunku do pozostałych wersji z gałęzi 3.x są naprawdę obiecujące, a zapewnienia z oficjalnej dokumentacji – nieprzesadzone.

Te wszystkie doniesienia to oczywiście dla wielu okazja do entuzjazmu wobec Pythona, zupełnie jakby dotychczas było go mało. W Sieci pojawiają się nawet komentarze, że to właśnie Python 3.11 przyczyni się do tego, że język ten przestanie być przeceniany, i że zdezaktualizują się zarzuty wobec jego ociężałości. Czy to okaże się prawdą? Premiery stabilnej wersji Pythona 3.11 możemy się spodziewać jesienią.  


Psst, psst! Rozważasz karierę Python Developera? Jeśli tak, to koniecznie zajrzyj tutaj:

<p>Loading...</p>