[python] Vykon Pythonu v praxi

Zdenek Pavlas zdenek.pavlas na nextra.cz
Pondělí Září 29 10:25:33 CEST 2003


Radim Kolar wrote:

> 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.

Spustte ten importni skript na jinem stroji nez kde bezi ta DB, a napiste
jej jako dva thready, propojene treba pomoci Queue(). Prvni thread bude
nacitat data a pripravovat zaznamy, druhy thread je bude vycitat z fronty
a uploadovat do DB. Tim zcasti zamaskujete tech 80% cekani na databazi,
v idealnim pripade to bude o 25% rychlejsi a brzda bude jen DB, a s tim
uz moc nenadelate.

Dobre je taky delat commity nikoliv po kazdem zaznamu ale dejmetomu
kazdych par tisic, ale to asi uz stejne delate.

> Zkusil jsem jeste rozdil python2.1 a python2.2 a zadnou meritelnou
> zmenu v rychlosti jsem nezjistil; casove rozdily byly mensi nez chyba
> mereni.

Mam podobne zkusenosti- normalni kod bezi zhruba furt stejne rychle.
Python2.2 umi napr. struct.unpack ('Q'), a v me aplikaci vyuziti tehle
'blbosti' pridalo dobrych 15% vykonu.. Podobne to bylo s dict.setdefault,
to kdyz se chytre vyuziva tak to taky hodne zrychli a hlavne zprehledni..

> 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.

Hmm, ze by hrala roli velikost cache?

-- 
Zdenek Pavlas




Další informace o konferenci Python