[python] Rekurzivní generátor v Pythonu 3?

Ondrej Tuma konference na webjet.cz
Úterý Srpen 30 16:09:29 CEST 2016


Zdravím vespolek,

kolega toto téma řešil tak před třemi lety a došel k závěru že je to
jedno. Resp. v každé verzi to bylo jinak. Pravda vstupovali do toho
i verze 2.x. Asi taky záleží jak moc jsou ty texty konstantní,
resp. jako moc jsou dynamické, v jakém kompilátoru s jakými přepínači je
pythoní interpretr kompilovaný a ad absurdum na jakém HW to běží.

Ondra

V Tue, 30 Aug 2016 12:28:30 +0200
Petr Messner <petr.messner na gmail.com> napsáno:

> To je veselé, když někdo dělá benchmark profilerem.
> 
> $ cat test_plus.py
> out = ''
> for i in range(10000000):
>     out += 'Nebudu komentovat rychlost algoritmů bez měření'
> $ cat test_append.py
> out = []
> for i in range(10000000):
>     out.append('Nebudu komentovat rychlost algoritmů bez měření')
> outstr = ''.join(out)
> $ time python3 test_plus.py
> 
> real 0m2.835s
> user 0m2.536s
> sys 0m0.288s
> $ time python3 test_append.py
> 
> real 0m1.848s
> user 0m1.588s
> sys 0m0.256s
> 
> 
> 
> Dne 30. srpna 2016 11:39 Matěj Cepl <mcepl na cepl.eu> napsal(a):
> 
> > On 2016-08-28, 10:54 GMT, Petr Messner wrote:
> > > Na tohle se vykašli. Jakmile dokument nemá stromovou
> > > strukturu, tak je vše tisíckrát složitější. Dikybohu toto XML
> > > neumí.
> >
> > Tohle je rada s odpuštěním na h... Ten vstupní datový formát mám
> > daný, s tím nemůžu nic dělat.
> >
> > > nedělej skládání řetězců stylem txt += part, je to strašně
> > > pomalé (O(n^2) místo O(n))..  Z txt si udělej list a používej
> > > append: txt.append(part) a na konci "".join(txt).
> >
> > To je veselé jak tyhle pověry drží. Tohle bylo opraveno
> > v pythonu 2.5 (pokud se nemýlím).
> >
> >     ~$ cat test_plus.py
> >     out = ''
> >     for i in range(10000000):
> >         out += 'Nebudu komentovat rychlost algoritmů bez měření'
> >     ~$ python3 -mcProfile test_plus.py
> >              3 function calls in 1.970 seconds
> >
> >        Ordered by: standard name
> >
> >        ncalls  tottime  percall  cumtime  percall
> > filename:lineno(function) 1    1.970    1.970    1.970    1.970
> > test_plus.py:1(<module>) 1    0.000    0.000    1.970    1.970
> > {built-in method exec} 1    0.000    0.000    0.000    0.000
> > {method 'disable' of '_lsprof.Profiler' objects}
> >
> >
> >     ~$ cat test_append.py
> >     out = []
> >     for i in range(10000000):
> >         out.append('Nebudu komentovat rychlost algoritmů bez
> > měření') outstr = ''.join(out)
> >     ~$ python3 -mcProfile test_append.py
> >              10000004 function calls in 3.331 seconds
> >
> >        Ordered by: standard name
> >
> >        ncalls  tottime  percall  cumtime  percall
> > filename:lineno(function) 1    1.845    1.845    3.331    3.331
> > test_append.py:1(<module>)
> >             1    0.000    0.000    3.331    3.331 {built-in method
> > exec} 10000000    0.528    0.000    0.528    0.000 {method 'append'
> > of 'list' objects}
> >             1    0.000    0.000    0.000    0.000 {method 'disable'
> > of '_lsprof.Profiler' objects}
> >             1    0.959    0.959    0.959    0.959 {method 'join' of
> > 'str' objects}
> >
> >     ~$
> >
> > Hezký den,
> >
> > Matěj
> >
> > --
> > https://matej.ceplovi.cz/blog/, Jabber: mcepl na ceplovi.cz
> > GPG Finger: 3C76 A027 CA45 AD70 98B5  BC1D 7920 5802 880B C9D8
> >
> > You either die a hero or you live long enough to see yourself
> > become the villain.
> >   -- Harvey Dent in The Dark Knight
> > _______________________________________________
> > Python mailing list
> > python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> >
> > Visit: http://www.py.cz
> >



-- 
Ondřej Tůma <mcbig na zeropage.cz>
www: http://ipv6.mcbig.cz   jabber: mcbig na jabber.cz   twitter: mcbig_cz
------------- další část ---------------
A non-text attachment was scrubbed...
Name: [žádný popis není k dispozici]
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://www.py.cz/pipermail/python/attachments/20160830/462c3443/attachment.asc>


Další informace o konferenci Python