[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