eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytmiczny problem lamera... :-)Re: Algorytmiczny problem lamera... :-)
  • X-Received: by 10.140.97.10 with SMTP id l10mr306619qge.1.1413144186330; Sun, 12 Oct
    2014 13:03:06 -0700 (PDT)
    X-Received: by 10.140.97.10 with SMTP id l10mr306619qge.1.1413144186330; Sun, 12 Oct
    2014 13:03:06 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    uq10no9433508igb.0!news-out.google.com!i10ni84qaf.0!nntp.google.com!dc16no23854
    23qab.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sun, 12 Oct 2014 13:03:06 -0700 (PDT)
    In-Reply-To: <m1ejaq$qkb$1@node2.news.atman.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.253.61.68;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 77.253.61.68
    References: <1...@g...com>
    <m0s8le$lfc$1@node2.news.atman.pl>
    <4...@g...com>
    <m18osf$4gt$1@node1.news.atman.pl>
    <2...@g...com>
    <m1cdr5$18m$1@node1.news.atman.pl>
    <1...@g...com>
    <m1dmig$8km$1@node1.news.atman.pl>
    <a...@g...com>
    <m1e6hq$pik$1@node1.news.atman.pl>
    <1...@g...com>
    <m1ejaq$qkb$1@node2.news.atman.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <2...@g...com>
    Subject: Re: Algorytmiczny problem lamera... :-)
    From: "M.M." <m...@g...com>
    Injection-Date: Sun, 12 Oct 2014 20:03:06 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:206748
    [ ukryj nagłówki ]

    On Sunday, October 12, 2014 9:03:54 PM UTC+2, bartekltg wrote:
    > A niby czemu? Jeśli dlatego, że to powiązane kawałki tablic,
    > odbije się to na późniejszej wydajności dostępu.
    > http://en.wikipedia.org/wiki/Unrolled_linked_list (albo drzewo)

    Mnie tez Twoje uzasadnienie przekonuje, osobiscie glebiej sie nie
    iteresowalem, wiec nie wiem dlaczego. W testach zwykle QList jest
    minimalnie szybsze. W dokumentacji QList czytamy:
    For most purposes, QList is the right class to use. Its index-based API is more
    convenient than QLinkedList's iterator-based API, and it is usually faster than
    QVector because of the way it stores its items in memory. It also expands to less
    code in your executable.


    > Skoro wiemy, ile danych będzie, lepiej podpowiedzieć to kontenerowi.
    > Nawet nie trzeba wiedzieć dokładnie, po to jest "reserve".
    Tak, też uważam że same allokacje już są wolne, a w przypadku wektora
    może jeszcze dojść do kopiowania danych, itd.

    > Jak mniej zmiennych?
    Wyrazilem sie nieprecyzyjnie. Chdzilo mi o ilosc zmiennych widocznych w
    poszczegolnych linijkach kodu. Jesli jedna zmienna sobie przeslonie, to
    mam pewnosc, ze tej przeslonietej przez przypadek nie uzyje (zamiast
    przeslaniajacej). Moim zdaniem, jest z tego ciut wiecej pozytku niz szkod.

    > Masz zmienną 'i' z pętli zewnętrznej oraz zmienna
    > 'i' z pętli wewnętrznej. To, że pierwsze 'i' nie jest dostępne dla
    > Ciebie przez nazwę, nie znaczy, że nie istnieje, kompilator ma tyle
    > samo zmiennych:)
    Tak tak, nieprecyzyjnie sie wyrazilem, zmienne sa oczywiscie dwie.

    > To jedynie pułapka na programistę.
    Co do tego nie zgadzam sie. Kompilator i programista maja podpowiedz, ze
    jedna ze zmiennych jest w danym fragmencie kodu nieuzywana.


    > Różnica jest też na -O2, gdy użyję
    > -fprofile-generate
    > -fprofile-use
    > na samym O2 nie ma. Do asma nie zaglądałem.
    > Dlaczego aż o tyle szybszy, pojęcia nie mam;-)
    I dobrze, szkoda czasu na zagladanie do asma :D

    Generalnie jest nauka z tego taka, ze nawet dzisiejszym, dobrze
    optymalizujacym kompilatorom, przydaja sie rozne podpowiedzi ze
    strony programisty. Takimi podpowiedziami moze byc slowo const,
    sam wskaznik zamiast zmiennej indeksujacej, przeslanianie
    nieuzywanych zmiennych...


    > Ma.
    > At() to to samo co [] + sprawdzanie zakresu (jeśli jest poza, rzuca
    > specjalny wyjątek).
    Bede musial sie zainteresowac tym STLem.


    > Dziwne to QT... ;-)
    Nie wiem, ja lubie QT :)

    > Główne przyspieszenie jest jednak z niemaczania struktury:)
    Nie kumam :)


    > A, wersja indeksowa/wskaźnikowa ma taką zaletę, że łatwiej
    > (nie każde omp i kompilator wspiera iteratory) zrównoleglić
    > przez openmp.
    Nie uzywalem od pewnego czasu OpenMP, ale tez tak mi sie cos
    przypomina.


    > Samo dodanie do testRaw
    > #pragma omp parallel for reduction(+:sum) //<-----
    > for( int i=0 ; i<CNT_ROWS ; i++ ) {
    > zbiło wynik do 5s (4 rdzenie).
    OpenMP bardzo czesto umozliwia zrownoleglenie kodu przy zachowaniu
    maksymalnej przejrzystosci.


    Pozdrawiam

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: