Portál AbcLinuxu, 1. května 2025 06:58
Python 3.13 pravděpodobně dostane JIT kompilaci. Pokud bude schválen pull-request 113465. Díky JIT (just-in-time) kompilaci by se běh programů mohl zrychlit o 2 až 9 procent.
Tiskni
Sdílej:
On average, GraalPy is 4.3x faster than CPython.Python v GraalVM. P.S. z diskuse na HN v roce 2021:
Wonder if the techniques can be upstreamed to upcoming JIT in CPythontak se to přeci jen povedlo, akorát místo 4× rychlejší je to o 4 % rychlejší (místy až 9).
$ time java Hello ahoj real 0m0,035s user 0m0,015s sys 0m0,026sNení to sice jako nativní AOT kompilovaná binárka třeba v C/C++, ale i tak to už asi ničemu nevadí. Co se týče paměti: 36 MB. To taky na dnešní poměry není špatné (a rozhodně to není 1 GB).
pry neumi udelat full blown jit, aniz by to nemelo fixni 1GB RAM penalty a nemelo to 100x pomalejsi startup premyslim, proc je node.js tak rychle, hmmmVtipálku, slušný python programátor porazí node.js i bez jit, rychlost pythonu neví v rychlosti interpretru ani v optimalizacích, ale z dobře použitých knihoven. Kdybys uměl číst, viděl bys, že JIT v pythonu 3.13 je experimentální featura, která nemá za cíl cokoliv zrychlovat, jen přidat API, aby se s tím do budoucna počítalo. Až se udělá opravdový jit, pak bude python konečně dostatečně použitelný i pro debily co dneska píšou v nodu nebo komentují tady.
to mi přijde podobné, jako to bylo u kryptoměn, jak je něco v kurzu, tak se tam software píše hrozně ve spěchu, bez ohledu na kvalitu, většinou je to nějak narychlo poslepovaný prototyp, který najednou lidi začnou používat v produkci
Python je bezva, protože je bezpečný, vysokoúrovňový, není to Céčko…a zároveň ale, když upozorníš na pomalost Pythonu:
Python je lepidlo a výkonný kód je stejně v nativní kompilované knihovně, takže nevadí, že samotný Python je pomalý.Jenže ty knihovny jsou typicky psané v Céčku, což jaksi popírá tu výhodu vysokoúrovňosti a bezpečnosti. To by se musely psát třeba v Rustu, C++, D, Go (?) nebo Javě kompilované přes GraalVM do nativní binárky. Pak by to bezpečné bylo. Ale když už člověk místo C dokáže použít Rust/C++/D/Go/Javu, tak proč vůbec potřebovat nějaké lepidlo v podobě Pythonu? Argument, že se nemusí kompilovat moc neberu, protože malé programy jsou zkompilované hned a automatizace je otázkou jednoho jednoduchého Makefilu nebo něčeho podobného. Navíc nutnost přepínat mezi jazyky podle toho, zda člověk chce zrovna „lepit“ nebo „programovat“ je dost nešikovná. Nemluvě o tom, že i při použití vyššího jazyka bude to rozhraní mezi Pythonem a nativní knihovnou mít nejspíš podobu céčkového API. Zrovna teď jsem potřeboval napsat „skript“ který mi z LDAPu vytáhne určité osoby a výsledek vypíše jako CSV. Mohl bych to udělat v shellu nad příkazy
ldapsearch
, grep, sed, awk atd. ale převádět ta strukturovaná data na text a ten zase parsovat a převádět dál na CSV mi bylo proti srsti. Tak jsem to napsal v Javě. A přijde mi to jako nejlepší řešení – je to jednoduché, nemá to žádné závislosti (klient pro LDAP je ve standardní knihovně a generátor CSV je jedna třída na pár řádků). Kdybych měl naučenou/vyzkoušenou LDAP knihovnu v jiném jazyce, tak bych to napsal třeba v C++, Rustu, D. Ale proč bych to měl psát v Pythonu?
Ale když už člověk místo C dokáže použít Rust/C++/D/Go/Javu, tak proč vůbec potřebovat nějaké lepidlo v podobě Pythonu? Argument, že se nemusí kompilovat moc neberu, protože malé programy jsou zkompilované hned a automatizace je otázkou jednoho jednoduchého Makefilu nebo něčeho podobného.Protože když dáváš zákazníkovi aplikaci, kterou si může customizovat programováním, tak mu tam nebudeš na systém instalovat komplet vývojovej stack. Já teda Python nepoužívám, ale význam lepidla celkem chápu. V mém případě je to Rust jako ten kompilovaný jazyk, a Rune jako lepidlo.
Jenže ty knihovny jsou typicky psané v Céčku, což jaksi popírá tu výhodu vysokoúrovňosti a bezpečnosti. To by se musely psát třeba v Rustu, C++, D, Go (?) nebo Javě kompilované přes GraalVM do nativní binárky. Pak by to bezpečné bylo. Ale když už člověk místo C dokáže použít Rust/C++/D/Go/Javu, tak proč vůbec potřebovat nějaké lepidlo v podobě Pythonu? Argument, že se nemusí kompilovat moc neberu, protože malé programy jsou zkompilované hned a automatizace je otázkou jednoho jednoduchého Makefilu nebo něčeho podobného. Navíc nutnost přepínat mezi jazyky podle toho, zda člověk chce zrovna „lepit“ nebo „programovat“ je dost nešikovná. Nemluvě o tom, že i při použití vyššího jazyka bude to rozhraní mezi Pythonem a nativní knihovnou mít nejspíš podobu céčkového API.Spousta těch knihoven je v Cythonu (např. numpy), což je takový podivný hybrid mezi pythonem a C. Výhoda v bezpečnosti je stejná jako u toho rustu: mám pevně oddělené safe a unsafe části. Výhoda oproti tomu to psát v jazycích co zmiňuješ je mnohem vyšší produktivita a menší množství kódu, při hodně podobné rychlosti běhu programu. A když už rychlost nestačí neni zase problém přepsat výkonově kritický python modul do rustu nebo C++, oba mají efektivní a jednoduše použitelné knihovny pro python bindingy. Pokud seš tak starej, že píšeš nejradši skripty v javě, k asi nemá cenu tě přesvědčovat, dožij si s tím co umíš :) Já ani nevim jestli mám v počítači překladač javy nainstalovanej.
Pokud seš tak starej, že píšeš nejradši skripty v javě, k asi nemá cenu tě přesvědčovat…Ještě jsem zapomněl dodat, že k jejich sestavení/spuštění rád používám Make.
Povedal by som, ze dizajn ktory nemoznuje taketo veci je podstatne blbuvzdornejsi a jednoznacny.Vidiš to. Já to vnímám naopak. Nikdy jsem neměl třeba v Haskellu problém s tím, že odsazoval. Stejně bych to dělal. A tak skutečnost, že tam není smetí považuji za plus. Pokud něco špatně napsal, tak mě srozumitelně vynadal. V Javě, C#, etc které používají volný styl, tak tam to vždycky řvalo nějaké haluze, a poradil jsem si jen díky tomu, že už prostě mám nějaké zkušenosti. Takže v tom to nebude. A co třeba skutečnost, že u volného stylu vždycky probíhá řežba, jak se bude kód formátovat. O to jsem v Pythonu ochuzenej (a mohu se soustředit na jiné spory). (zbytek textu jsem nepochopil, tak jsem to ignoroval)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.