eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytmiczny problem lamera... :-)Re: Algorytmiczny problem lamera... :-)
  • Data: 2014-10-12 22:03:06
    Temat: Re: Algorytmiczny problem lamera... :-)
    Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie 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: