Na spoustu věcí je Python rychlý až až, ale na skoro stejně velkou množinu použití se svojí „rychlostí“ nehodí vůbec. Nicméně ani v rychlostně více náročných aplikacích není třeba hned házet flintu do žita a jít všechno naprogramovat v něčem jiném!
Předně můžete prostě jenom vyzkoušet jiný interpret Pythonu než klasický výchozí CPython. Většinou to asi žádné zázraky nebudou, ale za pokus to stojí. Možností je mnoho, já se krátce zmíním pouze o:
Častěji ale asi budete muset kód trochu poupravit, tu více, tu méně, ovšem s výrazně většími efekty. Možností je opět mnoho
PyPy je alternativní interpretr Python'u s několika zajímavými vlastnostmi:
Bohužel na takto velký projekt je placen převážně z dobrovolných příspěvků, a tak je celkem pochopitelně poněkud pozadu s kompatibilitou s novějšími verzemi Python'u (oficiálně uvádí 2.7.12 a 3.3.5, přičemž trojková řada je navíc docela novinka) a některými knihovnami (kupříkladu právě podpora Numpy nebývala nijak dobrá).
Do podobného balíku jako PyPy spadá i Numba:
Kdyby ji měl člověk používat jenom jako alternativní interpret, ne vždy si pomůže (Numba z Condy pro Python 3.5 byla na mém počítači asi o čtvrtinu pomalejší než CPython). Nicméně to není její jediná a hlavní silná stránka, jak se dozvíme hned na dalším slajdu.
Kromě nasazení jako alternativní interpretr Numba umí i několik velmi zajímavých vychytávek navíc. Mezi nejzajímavější patří asi:
nopython
, kterým můžete zabránit v tvorbě méně efektivního kódu, nedá-li se funkce rozumně zkompilovat (za cenu vyhození výjimky), nebo třeba nogil
, kterým můžete vypnout nechvalně proslulý GIL.
Podporuje-li JIT v Numbě vámi požadované operace, můžete takříkajíc za málo peněz získat hodně muziky – zrychlení kódu o několik desítek nebo dokonce stovek procent díky přidání dvou řádků kódu do originálního pythoního zdrojáku za pokus určitě stojí, ne?
Nepomohla-li Numba, dalším krokem je zkusit Cython:
Pouhé doplnění typů proměnných (a funkcí) může zabrat, ale častěji spíš nebude stačit. Pak vás ovšem čekají úpravy, které originální pythoní zdroják změní místy k nepoznání (jako například nahrazení jednořádkových kódů s univerzálními operacemi zanořenými smyčkami, které na první pohled vypadá úplně nelogicky).
TODO