Python: Porovnání verzí
Smazaný obsah Přidaný obsah
→Vlastnosti: +illustration |
→Výkon: Aktualizace a doplnění informací související s výkonem programů psaných v jazyce Python. značka: editace z Vizuálního editoru |
||
Řádek 76:
== Výkon ==
Python patří mezi pomalejší jazyky. Výkon aplikací napsaných v Pythonu je dobrý, protože výkonově kritické knihovny jsou implementovány v jazyce [[C (programovací jazyk)|C]], s kterým Python výborně spolupracuje.
Na výkonově kritické programy se ale Python sám o sobě nehodí. Pro tyto účely vznikla během jeho historie řada optimalizačních technik.
V minulosti se pro zvýšení výkonu používala snadno použitelná knihovna [[Psyco]], která [[transparentnost (informatika)|transparentně]] [[Optimalizace (informatika)|optimalizovala]] kód Pythonu na výkon (JIT). Některé operace byly pomocí Psyco urychleny až řádově<ref name="gp4psyco">http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=python&lang2=psyco</ref>. Dnes je tato knihovna neudržovaná a hodí se jen pro 32 bitové prostředí a podporuje Python do verze 2.6.
V současné době tuto knihovnu nahradily projekty jako PyPy nebo Cython. PyPy je alternativní interpret jazyka Python, který je zaměřen na výkon a obsahuje vlastní implementaci JIT. Má i další vlastnosti, třeba stackless mód, který poskytuje výkonné mikro thready pro masivní paralelní programování.
Cython je kompilátor jazyka Python do binární podoby. Přesněji řečeno, Cython transformuje kód z jazyka Python do kódu jazyka C, který se pak běžnými nástroji přeloží do binární podoby. Jenom zkompilováním Python kódu do binární podoby vzroste výkon aplikace typicky dvojnásobně. Dále Cython rozšiřuje syntaxi Python jazyka. Například o statické typy nebo přímé volání funkcí z knihoven C. Tímto lze optimalizovat výkon programu až na úroveň výkonu programů napsaných přímo v jazyce C. Cython je kompatibilní se standardním interpretem Pythonu (CPython), což znamená, že Cythonem lze kompilovat knihovny pro Python. Lze tak s výhodou využít toho, že výkonově kritická je typicky jen malá část kódu, běžně jen pár funkcí. Tyto funkce lze vytáhnout do samostatného modulu, optimalizovat pro Cython a přeložit je Cythonem jako knihovnu pro Python. Programátorovi tak zůstane zachována flexibilita a pohodlí jazyka Python pro většinu kódu a současně s tím získá i vysoký výkon jazyka C. Na serveru root.cz je pěkná [https://www.root.cz/clanky/prakticke-pouziti-nastroje-cython-pri-prekladu-pythonu-do-nativniho-kodu-1/ ukázka postupné optimalizace Python kódu v Cythonu] pro získání maximálního výkonu s vysvětlením všech náležitostí. Já na ukázku uvedu začátek a konec optimalizace jednoduché funkce add_two_numbers().<syntaxhighlight lang="python3">
def add_two_numbers(x, y):
return x + y
z = add_two_numbers(123, 456)
print(z)
</syntaxhighlight><syntaxhighlight lang="cython">
from libc.stdio cimport printf
cdef int add_two_numbers(int x, int y) nogil:
printf("%i\n", x)
return x + y
z = add_two_numbers(123, 456)
print(z)
</syntaxhighlight>
== Spolupráce s jinými aplikacemi ==
|