range() vs. xrange() (bylo RE: [python] dotaz-mřížka )

Jaroslav Pachola j_p_misc na centrum.cz
Středa Duben 6 18:10:07 CEST 2005


Ahoj,

Dne Wednesday 06 April 2005 17:57 Ivo Štolpa napsal(a):
> >
> > hello
> > Ted sem nasel v knize Zaciname programovat v jazyce Python vydane CP ze
> > rozdil xrange a range je .... range tvori seznam a xrange ne ale pri
> > tom je xrange silne pomalejsi ...
> >
> > ahoj
> > _______________________________________________
> > Python mailing list
> > Python na py.cz
> > http://www.py.cz/mailman/listinfo/python
>
> Ano, já tu knížku mám taky a taky jsem to zrovna četl. Z toho ovšem
> vyplývá, že pokud v hypotetické verzi Python 3.0 by chtěli udělat tu
> šarádu, tedy zrušit range a xrange přejmenovat na range, tak by do toho
> mohli jít jedině v tom případě, že by současnou xrange výrazně
> zrychlili. No a také z toho plyne, že pro seznamy, o kterých vím, jak
> jsou velké a o kterých vím, že nebudou nikdy mít miliony prvků, nemá
> smysl xrange používat. Nutno ale také podotknout, že já to ve své
> aplikaci zkoušel přehodit tam i zpět a žádné výkonostní výkyvy ani na
> jednu stranu jsem pouhým okem nezpozoroval. Takže ono asi také záleží na
> tom, co programuji a jestli je pro mne ten výkonostní rozdíl tak důležitý.
>
> Ivo

zkus si udelat benchmark a uvidis. Pouziti range() muze byt rychlejsi leda v 
pripade, ze si vysledek toho range() ulozis do nejake promenne a pak tuto 
promennou pouzivas nekde ve vnitrnim cyklu, coz dela asi malokdo. Cela ta 
sarada ma IMO jasny vyznam - krome toho castecneho zrychleni se odstrani v 
praxi nesmyslne vytvareni seznamu jenom za ucelem pouziti pro inkrementaci v 
cyklu for.

JP



Další informace o konferenci Python