Ze začátku mě u Pythonu překvapovalo, že každý int a float zabírá v paměti takové obrovské bloky tedy přes 24 bajtů. Ale pokud se Python používá pro numericky intenzivní výpočty, je nejlepší to hodit na Numpy a tam už se dají použít nativní datové typy. Nebo Pytorch, ale to už je trošku horší na setup atd. (problémy s virtuálkami, tedy aspoň u nás :-)
Takže ano, jak se píše, Python je zejména u intů strašně neefektivní (jako STRAŠNĚ - udělejte si benchmarky a profiling, sami uvidíte), ale Numpy to řeší poměrně elegantně.
No popravdě jsme se taky nechali chytit do pasti. Problém s Pythonem je, že ho zná (nebo si to myslí) kde kdo a navíc se dá PoC v Pythonu nadatlit fakt rychle. Potom už není čas/chuť to přepsat a třeba v mém teamu je averze vůči něčemu jinému než Python/Go :-)
Takže v důsledku platíme za provoz Pythonních služeb docela dost. Určitou "výhodou" je, že se se hodně používá i storage, takže se ta cena Pythonu na produkci trošku ztrácí. Ale je tam.
Ohlédnuto zpět: kombo Julia+Go by bylo bývalo lepší (s jiným teamem :-)
My v týmu prototypujem numerické výpočty v Julii a do produkce to jde v C++. Osobně bych mnohem raději bastlil v Numpy, ta Julie je ve skutečnosti neskutečně pomalá (člověk čeká vteřiny a desítky vteřin než se něco vůbec začne dít) a ekosystému Scipy+Numpy se to neblíží.
Věřím, že pokud se v Julii píše specificky (správně?), tak to asi dlouhé výpočty zrychlit může, ale my jsme fyzici a chceme rychle prasit :/. Nemluvě o pokusech skompilování Juliáckého kódu do .dll nebo tak něco (furt pomalé a má to gigabajt). Autorům ale nelze upřít pokroky, za 5 let to možná i budu mít rád.
My jsme taky fyzici a prasíme ve Fortranu :) Je fakt, že v Julii se musí psát opatrně, aby kód běžel rychle. A binárky/knihovny dělat neumí, jen sysimage. Verze 1.9 ale nabíhá mnohem rychleji, má caching balíčků nebo něco takového.
Mně se osobně nejvíce líbí Fortran (takový ten klasický předOOPní). C++ je klasika a teď je hype Rust. Julia možná ještě potřebuje dozrát, ale už se dostala do Petaflop klubu, takže něco na ní bude.
Julia se taky prodrala do F1 :D To má malé nevýznamné plus.
https://discourse.julialang.org/t/julia-in-formula-1/79145
Jj, samozřejmě jsem dělal profiling atd. Jedná se o jednu komponentu z celé pajplajny (dneska je všechno v IT pajplajna), co dělá jednoduchou činnost:
1. zkonzumuje z Kafky URL do S3
2. stáhne si data z S3
3. provede potřebné výpočty (čistě Pythonovský kód)
4. pošle výsledek do dalšího Kafka topicu
5. když to spadne, pošle původní data + stacktrace + .... do DLQ
Pomalej je ten výpočet (zhruba sekunda na každou zprávu), což je vlastně (stručně řečeno) sada if-ů, nějaký zpracování slovníků, n-tic atd. prostě klasickej Python, žádné volání dalších věcí tam schováno není.
Pokud je rychlost klíčová, není lepší to postavit na jiném HW, typicky na grafických kartách? (pokud to jde paralelizovat).
Bude luxus, až celou funkční aplikaci bude možné předhodit nějaké té expertní strojové inteligenci s úkolem "převeď to do Rustu, optimalizuj to na výkon a kdyby tam byla nějaká bezpečnostní rizika, dej vědět".
Taky mám pár věcí v oblacích a musím tomu podřizovat architekturu aplikace, abych neplatil moc.
Ono je to na jednu stranu pěkné, kolik je tam fičůr majících usnadnit vývoj, nasazení, škálování, monitoring, ale pak si umí naúčtovat za 1GB RAMky/měsíc takovou částku, že bych za to koupil 4GB do vlastního serveru.