-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: " M.M." <m...@N...gazeta.pl>
Newsgroups: pl.comp.programming
Subject: Re: dalsza optymalizacja
Date: Sun, 1 Apr 2012 17:37:09 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 107
Message-ID: <jla3o5$hv7$1@inews.gazeta.pl>
References: <jl73ie$b6f$1@inews.gazeta.pl> <jl9aaf$326$1@inews.gazeta.pl>
<jl9al3$ee7$1@inews.gazeta.pl> <jl9dfl$a80$1@inews.gazeta.pl>
<jl9e7f$epj$1@node2.news.atman.pl> <jl9ftm$j00$1@inews.gazeta.pl>
<jl9h5r$i0o$1@node2.news.atman.pl> <jl9ju9$o28$1@inews.gazeta.pl>
<jl9nc4$oha$1@node2.news.atman.pl> <jl9pbd$s10$1@inews.gazeta.pl>
<jl9pjl$qts$1@node2.news.atman.pl> <jl9udd$jka$1@inews.gazeta.pl>
<jla0s1$37m$1@node2.news.atman.pl>
NNTP-Posting-Host: localhost
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1333301829 18407 172.20.26.236 (1 Apr 2012 17:37:09 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 1 Apr 2012 17:37:09 +0000 (UTC)
X-User: mariotti
X-Forwarded-For: 89.229.34.123
X-Remote-IP: localhost
Xref: news-archive.icm.edu.pl pl.comp.programming:196514
[ ukryj 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
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-23 Gdańsk => Programista Delphi <=
- 2025-07-23 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-23 Warszawa => Starszy inżynier DevOps (AWS) <=
- 2025-07-23 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-23 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-23 Wrocław => Senior Key Account Manager IT <=
- 2025-07-23 Trójmiasto => Head of Social Media <=
- 2025-07-23 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-23 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-07-23 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-23 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-23 Kraków => Kotlin Developer <=
- 2025-07-23 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-23 Warszawa => Java Developer <=
- 2025-07-23 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=