eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingBisekcja... › Re: Bisekcja...
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!news.mixmin.net!aioe.org!.POSTED!not-for-mail
    From: AK <n...@n...net>
    Newsgroups: pl.comp.programming
    Subject: Re: Bisekcja...
    Date: Tue, 11 Dec 2018 20:25:35 +0100
    Organization: Aioe.org NNTP Server
    Lines: 45
    Message-ID: <pup2vf$152p$1@gioia.aioe.org>
    References: <f...@g...com>
    <a...@g...com>
    <c...@g...com>
    <puof83$gf9$1@gioia.aioe.org>
    <3...@g...com>
    NNTP-Posting-Host: MV2AClG/2c9bVI3d/hJi2Q.user.gioia.aioe.org
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Complaints-To: a...@a...org
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101
    Thunderbird/52.9.1
    Content-Language: en-GB
    X-Notice: Filtered by postfilter v. 0.8.3
    Xref: news-archive.icm.edu.pl pl.comp.programming:213020
    [ ukryj nagłówki ]

    On 2018-12-11 19:35, DMR wrote:
    >> Dlaczego nie jakies hashowanie ?
    >
    >
    > Wykombinowanie dobrej funkcji, kolizje, kupa danych... Nie wiem, czy to ogarnę.
    > Ale zgłębiam temat. Bo niby - czemu nie? ;-)
    >

    ...a nie lepiej uzyc cus gotowego/sprawdzonego ?
    Np takie cos w Pythonie (na dosc slabym kompie-szefc bez butow chodzi:)
    dla 10 000 000 'rekordow':

    import timeit

    dictionary = { key: str(key).zfill(6) for key in range(10000000) }
    print(timeit.timeit('temp = { key: str(key).zfill(6) for key in
    range(10000000) }', number=1))

    print(dictionary[9999999], timeit.timeit('dictionary[9999999]',
    number=10000, globals=globals()) / 10000)
    print(dictionary[1], timeit.timeit('dictionary[1]',
    number=10000, globals=globals()) / 10000)
    print(dictionary[5000009], timeit.timeit('dictionary[5000009]',
    number=10000, globals=globals()) / 10000)
    print(dictionary[100000], timeit.timeit('dictionary[100000]',
    number=10000, globals=globals()) / 10000)

    daje takie czasy:
    D:\>py zzz.py
    5.356959160756147
    9999999 7.252555713392894e-08
    000001 5.5035608509168556e-08
    5000009 7.855509932497284e-08
    100000 8.065047214307341e-08

    i to dla teoretycznie dosc slabych hashy, bo dla liczb naturalnych.
    Oczywiscie szybkosc hashowania liniowa wzgledem rozmiaru,
    a szybkosc szukania praktycznie niezalezna od rozmiaru.

    PS: Oczywiscie to klasyczny dict/set (czyli klucz jest unikalny)
    Istnieja oczywiscie: multidict i multiset, choc w Py niestandardowo.
    W/w ma glownie obrazowac ze kilkadziesiat tysiecy to dzis raczej
    "pryszcz" dla klasycznych/gotowych rzeczy.

    AK

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: