eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytmiczny problem lamera... :-)Re: Algorytmiczny problem lamera... :-)
  • X-Received: by 10.140.102.130 with SMTP id w2mr3411qge.16.1413136439697; Sun, 12 Oct
    2014 10:53:59 -0700 (PDT)
    X-Received: by 10.140.102.130 with SMTP id w2mr3411qge.16.1413136439697; Sun, 12 Oct
    2014 10:53:59 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    dc16no2357956qab.1!news-out.google.com!i10ni84qaf.0!nntp.google.com!dc16no23579
    52qab.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sun, 12 Oct 2014 10:53:59 -0700 (PDT)
    In-Reply-To: <m1e6hq$pik$1@node1.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>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <1...@g...com>
    Subject: Re: Algorytmiczny problem lamera... :-)
    From: "M.M." <m...@g...com>
    Injection-Date: Sun, 12 Oct 2014 17:53:59 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:206744
    [ ukryj nagłówki ]

    On Sunday, October 12, 2014 5:25:46 PM UTC+2, bartekltg wrote:
    > On 12.10.2014 13:39, M.M. wrote:
    > Trochę porównujesz inne rzeczy.
    > Test odpalasz 10 razy. Ale pamięć dla tablic alokujesz tylko
    > raz, dla kontenerów 10 razy:>
    O to chodzi aby nie porownywac takich samych procedur - zart :D
    Powiedzmy ze porownuje wszelka wygode programowania na szablonach z
    metlikiem wskaznikow.

    > BTW,
    > static int data[CNT_ROWS][CNT_COLS];
    > Zdecydowanie nie leży na stosie ;-) Przez to static.
    Zgadzam sie.

    > Znasz rozmiary statycznie, a jednak nie używasz resize.
    > przez co alokujesz to co trzeba, ale też polowę, ćwiartkę...
    Porownuje tez listy vs wektory. Lista powinna byc sprytniejsza.


    > Rules jako tablica tablic możę bie być najlepsza? I tak każda
    > reguła jest inaczej używana, nie wsadzisz więc tego w pętlę.
    > Czemu nie struktura? [update, zaminiłem ma pair, przyszpieszenie
    > znikome]
    Hmmm moze, nie wiem.

    > > for( int i=0 ; i<LOOPS ; i++ ) {
    > > for( int i=0 ; i<CNT_ROWS ; i++ ) {
    > Nie rób tak ;-)
    Poniewaz taka sama nazwa zmiennej? Lubie tak robic, choc
    przyznaje, ze czasami tez mnie to drazni. Jednak generalnie dla
    programisty mniej zmiennych do analizy, a dla kompilatora... tez
    mniej zmiennych do optymalizowania.

    > Wrzuciłem napisaną przez siebie wersję na vector.
    > Ciut wolniejsza, ale nie aż tak;-)
    Dzieki wielkie!


    > testRaw
    > 9.14884s sum=-191116600
    > testRaw2
    > 6.54265s sum=-191116600
    > testVectBrt
    > 10.0932s sum=-191116600
    > testVect2Brt
    > 9.03653s sum=-191116600

    Ciekawe dlaczego u Ciebie testRaw2 taki szybki wypadl. U mnie byl
    ciut wolniejszy. Z powodu innego sprzetu, kompilatora, opcji
    kompilacji?


    > long long testVector()
    >
    > {
    >
    > vector< vector<int> > data( CNT_ROWS, vector<int>(CNT_COLS,0) );
    >
    > for( int i=0 ; i<CNT_ROWS ; i++ )
    >
    > {
    >
    > for(auto it = data[i].begin(); it!=data[i].end(); ++it )
    >
    > *it = ( rand() % 1000 );
    >
    > }
    >
    > vector< vector<int> > rules(CNT_COLS, vector<int>(2,0));
    >
    > for( auto it = rules.begin(); it!=rules.end();++it )
    >
    > {
    >
    > (*it)[0]=( rand()%100 );
    >
    > (*it)[1]=( 900 + rand()%100 );
    >
    > }
    >
    > long long sum = 0;
    >
    > for( int l=0 ; l<LOOPS ; l++ ) {
    >
    > for( auto it=data.begin(); it !=data.end(); ++it ) {
    >
    > int j=0;
    >
    > while( j < CNT_COLS && (*it)[j] >= rules[j][0] && (*it)[j]
    >
    > <= rules[j][1] )
    >
    > {
    >
    > j++;
    >
    > }
    >
    > sum += (j==CNT_COLS) ? +1 : -1;
    >
    > }
    >
    > }
    >
    > return sum;
    >
    > }
    Musze sprawdzic, czy vector z stdliba te ma constBegin, albo metode
    'at' zamiast operatora indeksowania[]. W QT metoda at jest duzo szybsza
    od operatora[].


    > long long testVector2()
    >
    > {
    >
    > vector< vector<int> > data( CNT_ROWS, vector<int>(CNT_COLS,0) );
    >
    > for( int i=0 ; i<CNT_ROWS ; i++ )
    >
    > {
    >
    > for(auto it = data[i].begin(); it!=data[i].end(); ++it )
    >
    > *it = ( rand() % 1000 );
    >
    > }
    >
    > vector< pair<int,int> > rules(CNT_COLS);
    >
    > for( auto it = rules.begin(); it!=rules.end();++it )
    >
    > {
    >
    > it->first=rand()%100 ;
    >
    > it->second=900 + rand()%100 ;
    >
    > }
    >
    > long long sum = 0;
    >
    > for( int l=0 ; l<LOOPS ; l++ ) {
    >
    > for( auto it=data.begin(); it !=data.end(); ++it ) {
    >
    > auto dit = (*it).begin();
    >
    > auto rit = rules.begin();
    >
    > while( rit!=rules.end() && *dit >= rit->first && *dit <=
    >
    > rit->second )
    >
    > {
    >
    > ++rit;
    >
    > ++dit;
    >
    > }
    >
    > sum += (rit-rules.begin()==CNT_COLS) ? +1 : -1;
    >
    > }
    >
    > }
    >
    > return sum;
    >
    > }
    Hmmmm, sprytniejsze.


    > Nadal nie powiedziałeś, czemu vector z QT, a nie STL? ;-)
    Na razie tylko z przyzwyczajenia. Docelowo uzyje albo STL, albo
    sam napisze na swoje potrzeby jakis wektor, albo bedzie rzezba
    na wskaznikach.


    > Coś w tę strukturę jeszcze kiedyś wlezie? Jeśli nie, to tylko nadgarstek
    > męczysz wpisywaniem kropek;-)
    Wlezie duzo, ale przed testowaniem regulek (chyba) mozna zostawic tylko
    przedzialy min i max.

    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: