Tento soubor má velikost necelých 200kB, což je v ostrém kontrastu s moderními interpretry Pythonu, v nichž velikost interpretru dosahuje 39MB, což je více než 200× více
39MB? Interpreter v Debianu 13 má necelých 7MB:
ls -l `which python3.13`
-rwxr-xr-x 1 root root 6828688 25. čen 20.55 /usr/bin/python3.13
to je po stripu, bez stripu s debug symboly to má těch ~39 MB (možná na 32bit architektuře trošku míň). Ale můžeme porovnat i stripované velikosti, ten Python 0.9.1 má po stripu necelých 150 kB.
Jo a když se zapne -0s, tak to má 126 kB.
PS: pokud přes 80 % u nového Pythonu jsou debug informace, tak to o velikosti samotného iterpreteru nic moc nevypovídá.
23. 10. 2025, 11:04 editováno autorem komentáře
U nového interpreteru jsou debug informace přes 80 %. U starého 25 % a pokud se zapne stejná optimalizace -O3, tak jen 13 %. Takže už neporovnáváme kolik narostl interpreter (jako se tvrdí v článku), ale kolik to vygeneruje debug informací?
záleží na tom, jestli se po překladu ještě stripují symboly. V Pythonu 3.13/3.14 po trojici ./configure & make & sudo make install bude mít binárka debug symboly a pěkně naroste, defaultně je skutečně takto nafouknutá. Samozřejmě to můžeme porovnávat i stripnuté atd., pořád však má ten interpret (+runtime) řádově víc, než v 0.9.1.
Nárůst je pěkný, ale jak píšu v jiné větvi, u starého Pythonu tvoří při stejné optimalizaci -O3 při kompilaci debug informace cca 13 % u nového přes 80 %. Porovnání by mělo být u vlastních interpreterů, ne u toho, kolik debug infa to dokáže vygenerovat.
Každopádně díky za další skvělý článek, těším se na další.
tak já to přepíšu na popis nestripovaných i stripovaných variant. Ono to nebude 200x, ale "jen" cca 50x :-)
Asi zalezi na tom co je linkovano dynaickya co staticky?
HAdam co slinkoval tisnik byla plne staticky linkovana binarka. To co mas ty bude nejak dynamicka ?
Fedorka:
```
ls -l /usr/bin/python3.13
-rwxr-xr-x. 1 root root 11704 Aug 14 02:00 /usr/bin/python3.13
```
tedy pouhych 12k.... `/usr/bin/python3.13: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=53a9c612272faab67c9cb9166575b1726a625502, for GNU/Linux 3.2.0, stripped`
Binarka z upstreamu se mi nejak nepodarila najit a buildit se mi to nechce.. Python opravdu nema standalone binarky pro linux? (ani widlacky zip, jen msi?), ani nightly?
Staticky selfbuild pak vypada takto:
ls -l ./python
-rwxr-xr-x. 1 usr usr 34340224 Oct 23 09:10 ./python
Python-3.14.0 / $ file ./python
./python: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=67e85ab265ea131cf226a6dd011b1f3b6e41fc8b, for GNU/Linux 3.2.0, with debug_info, not stripped
Tedy 34mega....
Jedna vesela vec do plena... Kdyz jsem ten build pustil, tak configure bezel, a bezel a bezel a .....
./configure | wc -l
786
a mozna bezi dodnes.... 700 checku? To sem jete snad nikdy nevidel :)
jj tam configure trva, proste "moderni" doba, kde si kazdej program musi ocuchat vsechno okolo, protoze nema metadata ;)
Tedy asi nikdo před těmi třiceti lety neodhadoval, že dneska bude Python vůbec nejpopulárnější jazyk. Kdysi to byl takovej čitelnější Perl :-)
Zkusil jsem ty bublinky na GraalPythonu, protože v případě takovéhoto CPU náročného algoritmu, který je napsaný jen v Pythonu by měl běžet opravdu rychle:
```
graalpy-community-23.1.1-linux-amd64/bin/graalpy bubble.py
Total time: 2.3310000896453857
```
Méně než 3s. To stojí za zmínku, ne?
tak překladačů Pythonu existuje hodně (minimálně čtyři v production-ready stavu: mypyc, Nuitka, Numba, vlastně i Cython), ale asi to nemá nic společnýho s porovnání standardních interpretrů (ty jsou referenčními implementacemi).
- řekl bych, že to ukazuje pár věcí
- kam se rychlost standardní implementace posunula za vice než třicet let (vlastně nikam)
- kam se posunul svět implementaci interpreterů (vcelku dost)
- dohromady pak: A vadí ta pomalost standardní implementace?
- Nevadí! Lidem to prostě přijde normální...
>>> - dohromady pak: A vadí ta pomalost standardní implementace?
>>> - Nevadí! Lidem to prostě přijde normální...
Pomalosť syntetických testov graalpythonu ma až tak netrápi. Dôležitý pre mňa je výkon najnovšieho CPythonu v reálnom svete.
27. 10. 2025, 12:18 editováno autorem komentáře
Pokud použiješ bubblesort, znamená to, že ti na rychlosti nezáleží. Nebo, že máš taková data, při kterých bude bubblesort nejrychlejší ze všech známých algoritmů. Ale můžeš zkusit zrychlit sleepsort ;-)
from os import fork
from sys import argv
from time import sleep
pole=[]
for i in range(1,len(argv)): pole.append(int(argv[i]))
m=min(pole)
for n in pole:
if not fork():
sleep(n-m)
print(n)
exit()
sleep(max(pole)-m)