Nemohol som si nevšimnúť, že keď v pythone importujem funkciu z iného skriptu, tak sa vytvorí zložka __pycache__ a v nej je .pyc subor s názvom skriptu. Aj som odmeral čas, za ktorý prebehne rovnaký úkon v mojom skripte a potom v importovanom skripte. Konkrétne:
x=0
while x<100000000:
x=x+1
a čas v importovanej funkcii bol polovičný.
Mám to teda chápať tak, že toto je ten úžastný cpython?A že všetky funkcie by som mal písať do druhého skriptu a potom importovať pre lepší výkon? Prípadne zachová sa nadobudnutý výkon aj po kompilovaní na .exe?
Ako píšeš, tento súbor sa vytvára v cache pri importovaní modulu a vytvára ho práve CPython (alebo nejaká iná modifikácia založená na ňom). Obsahuje kompilovaný bytecode, čo je len akoby predinterpretovaný .py súbor. Nie som si 100%tne istý, no .py a .pyc by mali byť v konečnom dôsledkú rýchlostne na tom rovnako a jediná rýchlostná výhoda je tá, že .pyc je pred spustením už skompilovaný zatiaľ čo .py to ešte len čaká čiže sa rýchlejšie načítajú.
Globálne premenné sú v pythone pomalšie. Stačí obaliť volanie do funkcie main a pôjde automaticky rýchlejšie. Lokálne premenné sú totiž viacej optimalizované (okrem iného globálne by sa nemali prakticky používať, takže nevadí, že prístup k nim je pomalší).
Máte pravdu. Rozdiel v rýchlosti spôsobovala globálna premenná a ja používam fakt veľa globálnych premenných :D. Ale teraz, keď už viem, že to nie je najlepší a najrýchlejší nápad, tak s tým asi prestanem.