-
Data: 2014-10-12 19:53:59
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 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
Następne wpisy z tego wątku
- 12.10.14 21:03 bartekltg
- 12.10.14 22:03 M.M.
- 24.10.14 10:55 m...@g...com
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-25 Wrocław => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2024-12-25 Warszawa => Sales Assistant <=
- 2024-12-25 Kraków => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-25 Lublin => System Architect (Java background) <=
- 2024-12-25 Szczecin => Specjalista ds. public relations <=
- 2024-12-25 Wrocław => Key Account Manager <=
- 2024-12-25 Kraków => Full Stack .Net Engineer <=
- 2024-12-25 Kraków => Programista Full Stack .Net <=
- 2024-12-25 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-25 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-12-25 Białystok => Delphi Programmer <=
- 2024-12-25 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2024-12-25 Kraków => Ekspert IT (obszar systemów sieciowych) <=
- 2024-12-25 Mińsk Mazowiecki => Spedytor Międzynarodowy <=
- 2024-12-24 Dzisiaj Bentlejem czyli przybieżeli sześciu Króli do Rysia na kasie