Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sta ce se brze izvrsiti?

[es] :: Art of Programming :: Sta ce se brze izvrsiti?

Strane: 1 2

[ Pregleda: 8454 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.powernet.bg.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Sta ce se brze izvrsiti?01.03.2006. u 15:18 - pre 220 meseci
Koristim pravo na repliku. :)

Citat:
A sada probaj da povecas vrednost maksimalnu vrednost j na 100 000 ili milion a maksimalna vrednost promenjive

Zasto? Prilicno sam siguran da to nece promeniti rezultat u korist druge petlje, jer je pred svakom od navedenih petlji stojala jos jedna sa k od 0 do 20000. Optimizacija je bila vec iskljucena jer je razlika nakon optimizacije stvarno neprimetna, ako je uopste ima...
Ipak se ++uje.
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.jetstream.xtra.co.nz.



+3 Profil

icon Re: Sta ce se brze izvrsiti?01.03.2006. u 15:29 - pre 220 meseci
Da, nisam lepo procitao, ucinilo mi se da si rekao da je prva petlja radila sporije.
Pokazi nam i nacine na koji si merio efikasnosti (b>c)?(a=b):(a=c) i a=(b>c)?b:c. Da li si stavio u neku petlju u kojoj si alternativno menjao vrednosti b i c tako da je u jednom slucaju b<c a u drugom b>c ? To je jako bitno jer procesor pamti gde je bio skok pa ce da pretpostavi da ce i sledeci put biti isti skok kada ponovo izvrsava tu instrukciju.

[Ovu poruku je menjao srki dana 01.03.2006. u 16:30 GMT+1]
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.powernet.bg.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Sta ce se brze izvrsiti?01.03.2006. u 15:50 - pre 220 meseci
Ne, nisam uopste pokusavao da napravim realnu situaciju. Samo sam bio pustio dugacku petlju sa datim kodom. Kod je zakacen za post.

[Ovu poruku je menjao Mali Misha dana 01.03.2006. u 17:00 GMT+1]
Ipak se ++uje.
Prikačeni fajlovi
 
Odgovor na temu

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 565
*.lstm.uni-erlangen.de.



+27 Profil

icon Re: Sta ce se brze izvrsiti?02.03.2006. u 15:54 - pre 220 meseci
Citat:
srki:
Ako se pravi kod koji ce raditi i na buducim masinama onda ne treba skoro nista rucno optimizovati jer ne mozemo znati da li ce buduca masina imati duplo veci ili triput veci kes, da li ce imati istu duzinu pajplajna itd...

Moje iskustvo je da kompilator (čak ni Intelov) neće pokušati da optimalno iskoristi keš, kao što je učinjeno u onom primeru množenja matrica koji si naveo u jednoj od prethodnih poruka. Razmeniće petlje, odmotati ih i preurediti jezgro da bi što bolje iskoristio fP jedinice i njihove cevovode, ali neće umetnuti dodatne petlje radi boljeg iskorišćenja podataka u kešu.

Citat:
Bilo bi zanimljivo pronaci razloge za to jer ako znamo razloge mozda bismo sitnom promenom koda mogli da nateramo jedan kompajler da optimizuje bolje.

Moje lično zapažanje je da je Intelov kompilator nekako jogunast, da GCC daje robusnije rezultate preko svega. Posebno sam uočio da Intel voli statički rezervisanu memoriju, umevao je da bude i dvostruko brži nego ako je memorija dinamički rezervisana. U jednom primeru Intel sa statičkom rezervacijom bio je ~15% brži od GCCa, a sa dinamičkom ~25% sporiji (GCC baš briga za način rezervacije). Možda je isto to došlo do izražaja i u gorepomenutom merenju performansi, ali nisam imao živaca da svrćem kôd na statičko rezervisanje.

Ideja za neki vudu-ples da bi se Intelov kompilator umilio da radi pošteno sa dinamičkom rezervacijom?
 
Odgovor na temu

fearless

Član broj: 74584
Poruke: 156
212.62.59.*

Sajt: www.phearless.org


Profil

icon Re: Sta ce se brze izvrsiti?02.03.2006. u 22:57 - pre 220 meseci
Da sam znao da ce ovako daleko otici... :)
Phearless - Serbian/Croatian Security Magazine: www.phearless.org
 
Odgovor na temu

srki
Srdjan Mitrovic
Auckland, N.Z.

Član broj: 2237
Poruke: 3654
*.jetstream.xtra.co.nz.



+3 Profil

icon Re: Sta ce se brze izvrsiti?03.03.2006. u 14:34 - pre 220 meseci
Citat:
Časlav Ilić: Posebno sam uočio da Intel voli statički rezervisanu memoriju, umevao je da bude i dvostruko brži nego ako je memorija dinamički rezervisana.


Mozda koristi neki svoj memorijski alokator koji je spor za objekte te velicine koje si ti koristio. Neki alokatori su u nekim slucajevima dobri a u nekima losi. Npr. kada se zahteva veliki broj alokacija za objekte male (fiksne!) velichine onda je dobro koristiti boost::pool alokator:
http://www.boost.org/libs/pool/doc/index.html

Pisano je malo o alokatorima ovde:
http://www.elitesecurity.org/t...Boost-Pool-memorijski-alokator

gde ima link i ka ovoj temi:
http://www.codeproject.com/cpp/allocator.asp

Ako je zaista rad sa dinamickom memorijom boljka Intelovog kompajlera opet nije lose ako to znamo jer to onda mozemo i da promenimo. Slicno tome i za funkcije clanice koje ne menjaju sadrzaj objektra treba koristiti kljucnu rec const jer tako zaista mnogo mozemo da pomognemo kompajleru da optimizuje neke najobicnije petlje jer samo zbog te jedne kljucne reci on ce znati da funkcija ne menja objekat pa moze da pozove funciju i nekim drugacijim redosledom. Verujem da rucnim optimizacijama moze dosta stvari da se poboljsa ali bolje je taj trud uloziti na pisanje koda koji godi kompajleru jer na taj nacin isto mozemo da optimizujemo stvari uz cistiji kod a optimizacije ce raditi na bilo kom procesoru. Sve je stvar procene da li npr. platiti $50000 programeru (programerima) da potrose mesece rada na optimizovanju nekog koda za neki super racunar ili tih 50000 potrositi na unapredjivanje tig racunara sa brzim procesorima. Za takve stvari je najbolje pitati nekog operativnog menadzera jer su neki programeri dosta sujetni i vole da prckaju tamo gde postoji i jednostavniji nacin da se rese stvari. Menadzer moze da pogleda procenu vodje projekta o vremenu potrebnom za optimizaciju i onda da odluci sta da radi. I naravno pre bilo kakve optimizacije treba izvrsiti merenja i videti gde je bottleneck. Npr. ako imamo neki program koji cita gomilu podataka sa diska i obradjuje i stampa rezultate onda je gubljenje vremena optimizovati obradu podataka ako se ta obrada ionako brze izvrsava od citanja tih podataka sa diska. Merenjem mozemo videti sta najvise usporava program i onda dalje mozemo videti sta da radimo.

[Ovu poruku je menjao srki dana 03.03.2006. u 15:35 GMT+1]
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
..shall-bg.customer.sbb.co.yu.

ICQ: 60630914


+1 Profil

icon Re: Sta ce se brze izvrsiti?03.03.2006. u 15:39 - pre 220 meseci
za specificne slucajeve (SMP okruzenje), korisno je pogledati i sledece alokatore:

http://www.hoard.org/
http://www.microquill.com/

alokatori su univerzum za sebe...
 
Odgovor na temu

[es] :: Art of Programming :: Sta ce se brze izvrsiti?

Strane: 1 2

[ Pregleda: 8454 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.