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