Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > cz.comp.lang.python > #3126

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

From Matěj Cepl <mcepl@cepl.eu>
Newsgroups cz.comp.lang.python
Subject Re: [python] Rekurzivní generátor v Pythonu 3?
Date 2016-08-30 11:39 +0200
Organization Aioe.org NNTP Server
Message-ID <slrnnsal28.ing.mcepl@mitmanek.ceplovi.cz> (permalink)
References <8a02dd40-db1a-4f1f-9f67-de14e49b5546@googlegroups.com> <mailman.23.1472408594.13667.python@py.cz>

Show all headers | View raw


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@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

Back to cz.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Rekurzivní generátor v Pythonu 3? Matěj Cepl <mcepl@cepl.eu> - 2016-08-27 14:09 -0700
  Re: [python] Rekurzivní generátor v Pythonu 3? Matěj Cepl <mcepl@cepl.eu> - 2016-08-30 11:39 +0200
    Re: [python] Rekurzivní generátor v Pythonu 3? Matěj Cepl <mcepl@cepl.eu> - 2016-08-31 11:58 +0200
    Re: [python] Rekurzivní generátor v Pythonu 3? Ondrej Tuma <konference@webjet.cz> - 2016-08-30 16:09 +0200

csiph-web