[python] Pomozte mi prosim s optimalizaci primitivniho kodu
Matej Pivoluska
pivoluska na matfyz.cz
Neděle Srpen 24 11:04:00 CEST 2003
Chrabros wrote --- napísal::
>Ahoj,
>napsal jsem svoji prvni aplikaci v Pythonu, tak me prosim nekamenujte.
>Mam jen jeden problem a to, ze cteni a zpracovani cca 10 MB souboru
>trva asi pul minuty, coz je vecnost. Zrejme jsem pouzil hloupou
>datovou strukturu.
>Muzete mi prosim poradit, jak zoptimalizovat tenhle kousek kodu?
>Predem diky.
>
> Dalibor
>
>
>while y<maxY :
> x=0
> line = file.read(maxX*2)
> while x<maxX :
> val = ord(line[x*2+2])*256 + ord(line[x*2+3])
> ... tady uz jsou jen nejaky podminky,
> ... ktere pocitaji cetnost hodnot val
> x=x+2
>y=y+2
>
>Mam pocit, ze vyuziti stringu line asi dela nejvetsi
>problemy, ale jak to udelat jinak?
>
>
Pri optimalizovani pocit nestaci. Najprv to prezen cez profiler. (Skript
profile.py z distribucie pythonu.) Ten povie, co trva najdlhsie. A potom
mozes zacat optimalizovat.
Ja mam naopak pocit, ze by bolo dobre optimalizovat naopak kod uprostred
vnutorneho cyklu, co takto napriklad
while x<maxX :
#val = ord(line[x*2+2])*256 + ord(line[x*2+3])
x2=x*2
val = ord(line[x2+2])*256 + ord(line[x2+3])
... tady uz jsou jen nejaky podminky,
... ktere pocitaji cetnost hodnot val
x=x+2
for x in range(maxX,2):
x2=x*2
val = ord(line[x2+2])*256 + ord(line[x2+3])
... tady uz jsou jen nejaky podminky,
... ktere pocitaji cetnost hodnot val
#x=x+2
...
Namiesto stringu by sa dal pouzit modul array
atd...
A este si skus precitat tento clanok:
http://www.python.org/doc/essays/list2str.html
Další informace o konferenci Python