[python] Vykon Pythonu v praxi
Radim Kolar
hsn na cybermail.net
Čtvrtek Září 25 15:31:45 CEST 2003
Udelal jsem si test vykonu Pythonu v real-world byznis aplikaci. V mem
pripade to byl davkovy import dat do databaze.
Abych to napsal co mozna nejpytonstejsi napsal jsem to co mozna nejvice
objektove. Vytvoril jsem objekt a ten mel jednotlive polozky oznacujici
jednotlive priznaky. objekt mel metody nacti ze souboru, nacti z
database a protoze vim z Javy ze procedure call je expesive, udelal jsem
jeste metody nastav atribut ze soubory (jmeno, hodnota) nastav atribut
z databaze(jmeno, hodnota) mapovani atributu mezi souborem a databazi
neni 1:1. Pak jsem si vytvoril jeste funkce eskepujsql, eskejpuj radku
atd, ktere jsem take volal vsude kde to bylo mozne.
Zde bych jeste dodal ze predchozi importer byl v Jave, database je
postgresql 7.2.
Vysledky byly nejenze dobre ale primo vynikajici:
Import 30M souboru trval na P2/266 1 minutu. Pricemz CPU cas mezi
databazi a pythonem se delil v pomeru 80:20 (databaze sezrala tech 80),
v pripade Javy importeru to bylo asi 86:XX.
Pythonsky zdrojak byl tretinovy co do delky oproti Java zdrojaku, kdyz
se k tomu pripocte srozumitelnost, snadnejsi udrzba tak z toho vyplyva
ze se tohleto v Jave psat zkratka nevyplati - neprinese to nic
podstatneho navic. Kdyz je to kratsi, maji bugy mene prostoru na to
aby se poschovavaly.
Zkusil jsem jeste rozdil python2.1 a python2.2 a zadnou meritelnou
zmenu v rychlosti jsem nezjistil; casove rozdily byly mensi nez chyba
mereni.
Co ale bylo zajimave, ze Python jede velice podstatne rychleji na
Pentiu2 narozdil od Javy, kde je rozdil mezi stejne rychlym p1 a p2
nic moc. Takze doporucuju psat pythonskym programatorum min.
cpu=pentium2.
Jeste by mne zajimalo za nekdo zkousel prelozit python s optimalizaci
pro i686 a i386 a porovnal vysledky pod windows a linuxem. V debian
mailing listu byla diskuze zda kompilovat debian pro 386 a 686 a vyslo
najevo ze vysledky testu neukazuji zadne podstatne zrychleni.
c/
Další informace o konferenci Python