-
Data: 2012-04-01 19:37:09
Temat: Re: dalsza optymalizacja
Od: " M.M." <m...@N...gazeta.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]bartekltg <b...@g...com> napisał(a):
> 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.
Ok, czyli sie nie oplaca. Wyglada na to ze dzisiejsze procesory
robia inkrementacje na typie double prawie tak samo szybko jak
na typie int. Moj kod pomiarowy na dole.
> 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.
Zgadza się.
W oryginalnym kodzie mam coś innego. Mam dane zero-jedynkowe i buduję z nich
układ równań normalnych. Dane mam upakowane. Upakowanie polega
na tym że zamiast zer i jedynek trzymam numery pozycji na których
są jedynki. Dane są trudne, mają znamiona funkcji losowej, dlatego
w przykładzie dałem rand. Mniej/więcej coś takiego:
for( int i=0 ; i<N ; i++ )
for( int j=i ; j<N ; j++ )
macierz[ jedynki[i] * rozmiar_wiersza + jedynki[j] ] ++;
Pozdrawiam
Kod pomiarowy:
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define BASE_SIZE (1000)
#define BASE_ITS (200000000)
int test_int() {
static int data[BASE_SIZE];
for( int i=0 ; i<BASE_ITS ; i++ )
data[rand()%BASE_SIZE] ++ ;
int max = 0;
for( int i=0 ; i<BASE_SIZE ; i++ )
if( max < data[i] )
max = data[i];
return max;
}
double test_double() {
static double data[BASE_SIZE];
for( int i=0 ; i<BASE_ITS ; i++ )
data[rand()%BASE_SIZE] ++ ;
double max = 0;
for( int i=0 ; i<BASE_SIZE ; i++ )
if( max < data[i] )
max = data[i];
return max;
}
int main(int argc, char *argv[]) {
clockid_t start;
srand(123);
start = clock();
int max_i = test_int();
printf("max = %d test int = %d\n" , max_i ,
(int)((clock()-start)/(CLOCKS_PER_SEC/1000)) );
start = clock();
double max_d = test_double();
printf("max = %lf test double = %d\n", (double)max_d,
(int)((clock()-start)/(CLOCKS_PER_SEC/1000)) );
return 0;
}
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 01.04.12 19:51 bartekltg
- 01.04.12 20:12 bartekltg
- 01.04.12 20:50
- 01.04.12 20:53 M.M.
- 01.04.12 21:57 bartekltg
- 01.04.12 22:09 M.M.
- 01.04.12 22:29 M.M.
- 01.04.12 22:44 bartekltg
- 01.04.12 22:49 bartekltg
- 01.04.12 22:50
- 01.04.12 23:56 M.M.
- 01.04.12 23:59 bartekltg
- 02.04.12 00:11 M.M.
- 02.04.12 00:13 M.M.
- 02.04.12 01:20 bartekltg
Najnowsze wątki z tej grupy
- 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
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-11 SEP 1 kV E
- 2024-12-11 DNS restrictions are on
- 2024-12-11 wielkie bu
- 2024-12-11 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-11 Aku LiPo źródło dostaw - ktoś poleci ?
- 2024-12-11 Warszawa => Specjalista Bezpieczeństwa Informacji <=
- 2024-12-11 Wrocław => Application Security Engineer <=
- 2024-12-11 Warszawa => Analyst in the Trade Development department (experience wi
- 2024-12-11 Lublin => Programista Delphi <=
- 2024-12-11 Motodziennik #305 Nowy ELEKTRYK za 350 złotych miesięcznie? Kreatywne kredytowanie problemów
- 2024-12-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-11 Katowice => Key Account Manager (ERP) <=
- 2024-12-11 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-11 Idzie zima...czyli zaczynamy TETRIS :)
- 2024-12-11 Warszawa => Analityk w dziale Trade Development (doświadczenie z Powe