Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jak pisać szybki kod w pythonie

Avatar for Paczesiowa Paczesiowa
October 07, 2015

Jak pisać szybki kod w pythonie

Paczesiowa, wroc.py#20

Avatar for Paczesiowa

Paczesiowa

October 07, 2015
Tweet

Other Decks in Programming

Transcript

  1. Optymalizacja • Nie chodzi o mikrooptymalizacje w Pythonie • Nie

    chodzi o optymalizacje algorytmiczna • Narzedzia do przyspieszania kodu w Pythonie
  2. Pypy • alternatywny interpreter • "z grubsza" kompatybilny z cpythonem

    • jitujacy kod • dokumentacja/community ok • male problemy przy instalacji – Virtualenv – numpypy
  3. Benchmarki pypy • cpython orig 7.97ms • cpython simple 12.41ms

    • pypy orig 1.04ms • pypy simple 0.43ms
  4. Zalety pypy • zero zmian kodu (w domysle) • zero

    zmian jezyka/skladni • darmowy zysk wydajnosci (dupy nie urywa)
  5. Wady pypy • caly projekt dziala inaczej (zamiast jednej petli)

    • numpypy to conajwyzej beta • problemy z kompatybilnoscia bibliotek
  6. Cython • jezyk - nadzbior pythona (*.pyx) • statyczny kompilator

    do C • opcjonalne statyczne typowanie • Pyximport • zero problemow • dobra dokumentacja/community
  7. Benchmarki cython • cpython orig 7.97ms • cpython simple 12.41ms

    • cython orig 7.68ms • cython simple 9.21ms • cython orig typed 3.07ms • cython simple typed 0.27ms
  8. Zalety cython • dokumentacja/community/dojrzalosc projektu • niewielkie zmiany w kodzie/skladni

    • dobry zysk wydajnosci po otypowaniu (wersja simple) • sporo mozliwosci • zmiany sa lokalne - na poziomie jednej funkcji
  9. Numba • dekorator jitujacy funkcje w locie • uzywa LLVM

    • opcjonalne statyczne typowanie • dokumentacja/community slabe • duze problemy przy instalacji (LLVM) • projekt na razie alfa – leci czesto notimplemented – przyklady z dokumentacji nie dzialaja
  10. Benchmarki numba • cpython orig 7.97ms • cpython simple 12.41ms

    • numba orig 8.58ms • numba simple 0.35ms • numba orig typed 8.36ms • numba simple typed 0.22ms
  11. Zalety numba • najprostsze w uzyciu • lokalna zmiana •

    plus na zachete, jak bedzie w fazie beta to bedzie super. Polecam dzieciom.
  12. Wady numba • na razie jest to alfa • jak

    sobie nie radzi to daje dupy kompletnie • swietna wydajnosc jak sie otypuje i ma sie farta
  13. ctypes • biblioteka do interoperacji (?) z kodem natywnym •

    wbudowana w standardowa dystrybucje pythona • dokumentacja idealna, zero problemow
  14. Benchmarki ctypes • cpython orig 7.97ms • cpython simple 12.41ms

    • ctypes orig 0.29ms • ctypes simple 0.23m
  15. Zalety ctypes • projekt skonczony • lokalna zmiana • zajebista

    wydajnosc. Zawsze. • przewidywalna wydajnosc (bo to C)
  16. Wady ctypes • trzeba przepisac kod na C • trzeba

    sie bawic gcc • trzeba sie nauczyc sztuczek - jak idiomy pythonowe robic w C • problemy z allokacja (a zwlaszcza z deallokacja) pamieci w C • problemy ze strukturami danych (bo to C)
  17. Benchmarki orig • Ctypes 0.29ms • Pypy 1.04ms • Cython

    typed 3.07ms • Cython 7.68ms • Cpython 7.97ms • Numba typed 8.36ms • Numba 8.58ms
  18. Benchmarki simple • numba typed 0.22ms • ctypes 0.23ms •

    cython typed 0.27ms • numba 0.35ms • Pypy 0.43ms • cython 9.21ms • cpython 12.41ms