Polskie forum Pythona
search
  • chevron_right Tematy
  • label Prezentacje

Różnice w osiagach - Python 3.12 vs 3.13

CC_PL
24 listopada 2024
chat_bubble_outline 5
  • link
    CC_PL
    Członkowie 62 posty
    24 listopada 2024 14:45 24 listopada 2024 14:45
    link

    Benchmarki porównawcze:

    en.lewoniewski.info/2024/python-3-12-vs-python-3-13-performance-testing/

    raydeal lubi to

    favorite 1

  • link
    rafalp
    Zespół 69 postów
    25 listopada 2024 23:10 25 listopada 2024 23:10
    link

    Fajne ale brakuje info czy 3.13 używało JIT'a czy nie 🤔

  • link
    CC_PL
    Członkowie 62 posty
    25 listopada 2024 23:21 25 listopada 2024 23:21
    link

    Raczej bez JIT. W innym artykule piszą, że asyncio zyskało 20%, a reszta to marginalne zmiany. Chociaż nie wiem czy +5% czy czasami więcej to tak mało, z wersji na wersję.

    Tu jeszcze jeden art: codspeed.io/blog/state-of-python-3-13-performance-free-threading

  • link
    Burgman
    Członkowie 30 postów
    8 czerwca 2025 13:41 8 czerwca 2025 13:41
    link

    Python Pi (3.14) wnosi kolejny speed-up:

    [ Python 3.14 Lands A New Interpreter With 3~30% Faster Python Code - Phoronix ]
    -> www.phoronix.com/news/Python-3.14-New-Interpreter

    [ Python 3.14 Performance: The Truth Behind the 30% Speed Boost Claim | Framework Training ]
    -> www.frameworktraining.co.uk/news-insights/truth-behind-30-percent-performance-gains-python-3-14/

    Jest ponoć szybszy nawet od JIT interpretera!

    [ Performance improvements in 3.14 and maybe 3.15 ]
    -> ep2025.europython.eu/session/performance-improvements-in-3-14-and-maybe-3-15

  • link
    rafalp
    Zespół 69 postów
    8 czerwca 2025 14:04 8 czerwca 2025 14:04
    link
    Napisane przez @Burgman:

    Jest ponoć szybszy nawet od JIT interpretera!

    Przy JIT zostało im dużo pracy, bo wiele kodu nie się jeszcze JITować. Natomiast kiedy JIT trafia na taki kod, to przekazuje wykonywania z powrotem do interpretera, i to przekazanie też jest powolne. Tutaj task który to śledzi: JIT nie obsługuje większości uopów

    Natomiast te 30% przy tail-callach pochodzi z zepsutego benczmarku. Faktyczny zysk jest mniejszy. Ten przyrost spowodowany był bugiem w kompilatorze który nie występuje jak wymusi się tailcalle.

    Burgman lubi to

    favorite 1

  • link
    rafalp
    Zespół 69 postów
    9 czerwca 2025 14:09 9 czerwca 2025 14:09
    link

    Dodam że przed Py3.14 funkcjonował podział na 3 poziomy optymalizacji w CPythonie:

    • Tier 1 specjalizujący pojedyncze opkody (np. zmieniający opkod dodaj_a_do_b na szybszy opkod dodaj_int_a_do_int_b.
    • Tier 2 który optymalizuje całe bloki kodu (np. wyrzucamy opkod sprawdz_czy_zmienna_to_int z funkcji bo identyczny check był już na jej początku).
    • JIT: wykonuj zoptymalizowane bloki kodu z Tier 2 z pominięciem interpretera.

    Problem w tym że duża część kodu nie jest obsługiwana przez T2, a z tego co jest, większości nie da się JIT'ować. T1 z resztą też nie obsługuje 100% kodu.

    Tutaj jest issue do śledzenia postępów na Tier 2: Increase fraction of code executed by tier 2.

    Tutaj do JIT: Better uop coverage in the JIT optimizer

    Od 3.14 Tier 2 uznaje się za część JIT. Pisze o tym Mark w planie prac grupy faster-cpython dla 3.14. Dawny T2 nie wykonuje już kodu sam tylko optymalizuje kod dla JITa.

    Staram się być w miarę na bieżąco z tym co się tam dzieje i wygląda na to że optymalizacje dzieją się głównie na tych polach:

    • Dodawanie nowych optymalizacji do T1 i JIT
    • Poprawianie miejsc w JIT gdzie optymalizacja jest przerywana przedwcześnie
    • Zmiany w Garbage Collectorze aby odblokować kolejne możliwe optymalizacje w JIT oraz no-GIL, oraz zmniejszyć wpływ samego GC na wydajność

    Burgman lubi to

    favorite 1

arrow_upward Idź do góry
powered by misago