Tyjo, 12 kategorií, to je trošku challenge si vybrat paletu :-)
Hele bylo by to takto lepší?
první a čtvrtý graf: https://github.com/tisnik/most-popular-python-libs/blob/master/mypyc/benchmark_results/benchmark_results.ipynb
Zkusil jsem to zgrupovat do čtyř skupin: native, mypyc, numba, cpython
Pokud můžu názor - to barevné zgrupování je super posun, ale držel bych se jednotného gradování, tedy například udělat vyšší verzi vždy tmavší (nebo světlejší) - numba 4 je nejsvětlejší a Python 3.12 "nejtmavší" (resp. více do modra - čekal bych, že bude taky nejjasnější, aby to bylo podle stejné logiky).
Tak snad už lepší:
https://www.root.cz/obrazek/1110420/
https://www.root.cz/obrazek/1110421/
To, že se nedají moc rozeznat CPythony tady až tak nevadí, na to jsou další grafy (jen s CPythonem)
Narazil jsem na toto. Znáte? Ještě jsem to nezkoumal, tak sám nevím, jestli stojí za to se tím zabývat. https://github.com/bytedance/matxscript
Pokud jsem dobře pochopil Guida, přitlačilo se na kešování.
Původní interpreter při sčítání čísel vždy důsledně koukal na to, jak sečíst int a int (string a string, float a int apod.), v definici objektů a provedl. Nový interpreter optimisticky předpokládá, že se typ promenných nebude lišit a tedy že know how s operací může cachovat - vede to naopak ke zpomalení, pokud se typy často mění, a vyšší spotřebě paměti.
Diky za hezky clanek. Pri dlouhych smyckach a pouziti Numpy mam s Numbou dobre zkusenosti. Trochu jsem doufal, ze do benchmark sady zahrnete i lpython, hlavne kdyz nese silnou ceskou stopu :) Jako priklad uziti maji na webu prave Mandelbrotovu mnozinu! https://dev.lpython.org/
P.S.: Prvni graf jsem taky nerozlustil, vychozi barevna sada Matplotlibu mi fakt nesedi :(
(repeat)
Tak snad už lepší:
https://www.root.cz/obrazek/1110420/
https://www.root.cz/obrazek/1110421/
To, že se nedají moc rozeznat CPythony tady až tak nevadí, na to jsou další grafy (jen s CPythonem)
Tak ze stejného soudku, https://www.modular.com/mojo a další, ale to by čék strávil mládí na tom.
Ještě existuje cinder of fb:
- https://github.com/facebookincubator/cinder
Taky má integrovaný JIT, možná by stálo za to to porovnat.
Konkretne jsem myslel kapitolu 7. Priijde hodne vagne/abstraktne napsane :). Ale neni to stiznost, dokazu si domyslet, ze s typovou informaci dokaze optimalizovat lepe.
Jinak, kdyz uz odpovidam, v jednom pripade se Vam to _5 prepsalo jako spodni index:
"O tom, že výše uvedený příkaz nebude importovat soubor mandelbrot_5.py, ale nativní sdílenou knihovnu, se můžeme přesvědčit například použitím nástroje strace:"
Aha díky. K tomu se ještě vrátím, protože to je na mypyc asi to nejdůležitější (a asi není náhodou, že je to součást mypy). Protože například taková funkce add(x,y) - o té může překladač v AOT říci jen to, že akceptuje dvě hodnoty typu PyObject a volá se tam metoda __add__ prvního předaného objektu. Tj. všechny ty kontroly typů, unboxing atd. se budou provádět v runtime - s tím mypyc nedokáže nic udělat.
Až u funkce add(x : int, y: int) může překladač vygenerovat int add(int x, int y) nebo si před to klidně dát i inline, pokud je to hodně krátký kód.
Fakt se k tomu vrátím, to je možná téma na celý článek :-)
K tomu indexu - s tím bohužel vůbec nic nedokážu udělat. Je to vlastně docela schizofrenní situace, protože text mám psaný v HTML, takže by ho redakční systém měl vzít tak jak je ("raw input"). Ale on do něj z neznámého důvodu hrabe a mění _x na dolní index. Dělá ještě nějaké další transformace, ale na ty jsem si za ta léta zvyknul a uhýbám mu z cesty :-) (třeba vyžaduje značky [b] a [em] a ne [strong] a [i], což je opět schizofrenní mix) ale zrovna ty indexy se tam objevují.
Pekny clanok. Dakujem. Je fajn mat aky-taky obraz, kde sa to pohybuje. Len ma to donutilo zamysliet sa, ci rychlost je to najpodstatnejsie, lebo doteraz som Python bral ako skriptovaci jazyk. Tak som si volaco precital a zistil, ze uz sa to povazuje za programovaci jazyk. V tom pripade je to este veeeelmi dlha cesta a asi to nepojde bez zasadnych zmien. Mozno Python 4.x.x ...uvidime.
> ale proc vznikaji nove a nove programovaci jazyky, kdyz to prezenu, proc nestaci C?
To je jako ptát se, proč vznikají nové nástroje, proč nestačí pěstní klín.
C je jazyk z IT pravěku. Ten jazyk má minimum featur a extrémní množství pastí. A to má každý překladač hromadu rozšíření, aby se ten jazyk dal rozumně používat.
IMHO je to jen další úroveň abstrakce a to je většinou naprosto v pořádku.
Málokdo asi v relném céčkovém userland kódu volá funkce jádra pro tisk zpráv nebo otevírání souborů. Raději použije něco ze stdio atd. Proč ne, je to ověřené a pohodlné, taky bezpečnější.
A přechod na další jazyk je ještě jedna úroveň abstrakce. Protože si nebudeme nic nalhávat - ani profíci nedokážou "uřídit" větší projekty a knihovny v céčku. Důkazem je CVE databáze (a ta obsahuje fakt jen bezpečnostní chyby, ne to, že něco padá na double free nebo přepsání zásobníku bez vektoru útoku).
Ano - teoreticky můžeme psát v C (teoreticky můžeme psát i v assembleru), ale lidé obecně to pro rozsáhlejší projekty prostě nezvládají. (opět IMHO, a to mám osobně céčko a assemblery rád; nicméně nebudu zavírat oči před realitou).
Je to tak - to je "vlastnost" redakčního systému, kterému se sice předává HTML, ale potom to je přefiltrováno a podtržítka (resp. text za nimi) je předělán na dolní indexy.
Jediné řešení je podtržítka nepoužívat. To je sice pro mě schůdné, ALE - pokud použiju pomlčky, tak zase s tím má problém mypyc, protože při překladu ze jména souborů tvoří interní identifikátory a tam (v C) se pomlčky použít nedají.