eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingdalsza optymalizacja › Re: dalsza optymalizacja
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!newsfeed2.atman.pl!newsfe
    ed.atman.pl!.POSTED!not-for-mail
    From: bartekltg <b...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: dalsza optymalizacja
    Date: Sun, 01 Apr 2012 18:48:00 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 56
    Message-ID: <jla0s1$37m$1@node2.news.atman.pl>
    References: <jl73ie$b6f$1@inews.gazeta.pl> <jl9aaf$326$1@inews.gazeta.pl>
    <jl9al3$ee7$1@inews.gazeta.pl> <jl9dfl$a80$1@inews.gazeta.pl>
    <jl9e7f$epj$1@node2.news.atman.pl> <jl9ftm$j00$1@inews.gazeta.pl>
    <jl9h5r$i0o$1@node2.news.atman.pl> <jl9ju9$o28$1@inews.gazeta.pl>
    <jl9nc4$oha$1@node2.news.atman.pl> <jl9pbd$s10$1@inews.gazeta.pl>
    <jl9pjl$qts$1@node2.news.atman.pl> <jl9udd$jka$1@inews.gazeta.pl>
    NNTP-Posting-Host: 144-mi3-6.acn.waw.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1333298881 3318 85.222.69.144 (1 Apr 2012 16:48:01 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sun, 1 Apr 2012 16:48:01 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327
    Thunderbird/11.0.1
    In-Reply-To: <jl9udd$jka$1@inews.gazeta.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:196513
    [ ukryj nagłówki ]

    W dniu 2012-04-01 18:06, M.M. pisze:
    > bartekltg<b...@g...com> napisał(a):
    >
    >> To nie dawaj złych przykładów ;)
    > Oryginalny przykład jest zbyt zagmatwany, chciałem uprościć jakoś :)
    >
    >>> W meritum chodzilo o to czy proste operacje arytmetyczne (jak
    >>> np. x = x + 1) na typie double sa istotnie wolniejsze niz na
    >>> typie int, albo long.
    >>
    >> Wyciąłeś test odpowiadają…cy na to pytanie.
    > Nie wiem jak ten test należy czytać.
    > int:1.682000 i2f:0.000000 double:1.766000 f2i:0.000000
    > int:1.688000 i2f:0.000000 double:1.794000 f2i:0.000000
    > int:1.696000 i2f:0.000000 double:1.773000 f2i:0.000000
    > int:1.691000 i2f:0.000000 double:1.765000 f2i:0.000000
    >
    > Czyżby pierwsza kolumna to czas inkrementacji na typie int,
    > a trzecia kolumna na typie double? To by sugerowało że

    Tak.

    > nie warto się bawić, bo jeszcze dochodzi czas pętli, indeksowania i
    > dostępu do pamięci.

    Nie, to czas całego kodu 'testowego'. Pętla, random etc.

    Dokłądniej
    start=clock();
    for (int i=0;i<N;i++) Ti[rand()%M]++;
    end = clock();

    N jest, jak w Twoim przykładzie, 1000 razy większe niż M.
    (dokładniej M=10000)

    Czas rand() zasłania praktycznie różnice.

    BTW,
    wyrzucając random:
    start=clock();
    for (int i=0;i<N;i++) Ti[i%M]++;
    end = clock();

    Wyniki są znacznie mniejsze.
    int:0.157000 i2f:0.000000 double:0.192000 f2i:0.000000

    I mówię na serio. Jeśli w kodzie masz takie losowanko
    'na którym klocku zrobić operację', średnio operacji
    na klocek jest dużo i są nieżależne, to nie rób tego
    w ten sposób. wygwenerpowanie 1000 liczb z penwgo rozkładu,
    aby z góry wiedzieć, ile operacji wykonać jest znacznie
    szybsze niż milion prostych randomów.


    pzdr
    bartekltg

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: