-
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!lub
lin.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MIS
MATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.co
m!postnews.google.com!g19g2000yqe.googlegroups.com!not-for-mail
From: Mariusz Marszałkowski <m...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: gaszcz if-ow kontra wywolanie przez wskaznik/wirtualne
Date: Sun, 21 Feb 2010 08:33:16 -0800 (PST)
Organization: http://groups.google.com
Lines: 79
Message-ID: <c...@g...googlegroups.com>
References: <3...@k...googlegroups.com>
<2...@1...googlegroups.com>
<2...@e...googlegroups.com>
<a...@y...googlegroups.com>
<a...@o...googlegroups.com>
<c...@v...googlegroups.com>
<7...@q...googlegroups.com>
NNTP-Posting-Host: 89.229.16.190
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1266769996 28416 127.0.0.1 (21 Feb 2010 16:33:16 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Sun, 21 Feb 2010 16:33:16 +0000 (UTC)
Complaints-To: g...@g...com
Injection-Info: g19g2000yqe.googlegroups.com; posting-host=89.229.16.190;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9.2)
Gecko/20100115 Firefox/3.6,gzip(gfe),gzip(gfe)
Xref: news-archive.icm.edu.pl pl.comp.programming:185007
[ ukryj nagłówki ]On 21 Lut, 03:10, bartekltg <b...@g...com> wrote:
> On 21 Lut, 01:48, Mariusz Marszałkowski <m...@g...com> wrote:
>
> > On 20 Lut, 23:51, bartekltg <b...@g...com> wrote:
>
> > > On 20 Lut, 21:42, bartekltg <b...@g...com> wrote:
>
> > > Wyniki najlepisze:
> > > wsk 333 100%
> > > case 339 101.8%
> > > if 348 104.5%
>
> > Kurka wodna... inny kompilator, inna maszyna no i inne wyniki. No ale
> > tak to już jest z językami wysokiego poziomu. Może ja walczę z
> > wiatrakami
> > próbując optymalizować kod w jezyku wysokiego poziomu.
>
> Jakbys pisal w asm zaleznosc od sprzetu byla by podobna.
>
> > U mnie machanie myszka zaburzalo wyniki co najwyzej o 0.1%
> >=dwa rdzenie?
>
> > > Kompilator - tradycyjnie VC.
>
> > A moze vc jest na tyle sprytny, ze zobaczyl tablice const i
> > rozwinal inline?
>
> Nie. W asm dla wskaznikow jest call na wyliczona funkcje z tabelki.
>
> A dalej sie robi ciekawie.
> Wersja z if nie przeszukuje tego 'binarnie' ale liniowo,
> sprawdza, czy r==0, jak tak, to wykonuje kod i skacze na koniec,
> jak nie, przeskakuje do porownanie r==1 i robi to samo.
> Czyli dla r=7 wykona 8 porownan.
>
> Wersja z case jest sprytniejsza. Dla r>6 (default, 7 i wiecej)
> robi skok, w przeciwnym wypadku robi
> jmp DWORD PTR $LN36@proc3[eax*4]
GCC robi podobny kod. Ale... zupelnie zapomnialem, bo
my tu mamy takie wartosci ze mozna adresy skokow warunkowych
wsadzic do liniowej tablicy. Jakby bylo
swicht
case -100:
case 1000:
case 666:
case 50:
to kompilator by musial zbudowac sterte a nie tablice liniowa i
zrobic wyszukiwanie binarne.
> to tablice etykiet w rozpisanym kodzie. Czyli dokaldnie to, co
> podejrzewam, chciales uzyskac tablicami.
>
> Zrobilem jeszcze wersje z recznym wyszukiwaniem binarnym,
> zawsze mamy 3 porownania.
> Widac jednak duzo skakania, bo mimo tego, ze 3<8/2, to ta
> wersja dziala minimalnie dluzej niz liniowe if.
Gcc tez robi dla if-ow wyszukiwanie liniowe, widocznie wyszukiwanie
binarne nie oplaca sie dla tak malej ilosci.
> > > To jest naprawde dziwne:)
> >Nie az tak dziwne. Nie wiem jak to jest naprawde, ale wyobrazam sobie,
>
> Tu zupelnie nie o to chodzi. Nie siedze az tak gleboko, ale
> czy case nie mozna traktowac jako lukier syntaktyczny na taka
> drabinke if? W ten sposob moze byc realizowana. Czemu kompilator
> mialby ja realizowac gorzej, zwlaszcza, ze to najprostrzy sposob.
Jeśli mamy wartosci case 0,1,2...N to faktycznie switch - case
powinno byc najwydajniejsze. Teraz to totalnie nie wiem czemu
kilka lat temu spotkalo mnie troche przykrosci za to ze zaproponowalem
swich-case zamiast gaszczu if-ow. Tam tez mielismy case od 0 do N.
Na malym programie bylo szybciej, a na duzym wolniej.
> Przedzej podejrzewam, ze gcc chcialo zbyt dobrze i za bardzo
> 'zoptymalizowalo', tworzac, jak ja w tym watku, wyszukiwanie binarne.
Wyglada na to ze w tym przykladzie gcc robi dokladnie to samo co VC .
Pozostaje jeszce kwestia procesora.
Pozdrawiam
Następne wpisy z tego wątku
- 21.02.10 16:35 Mariusz Marszałkowski
- 21.02.10 18:42 bartekltg
- 21.02.10 19:33 Mariusz Marszałkowski
- 21.02.10 19:34 Mariusz Marszałkowski
- 21.02.10 20:01 Michoo
- 21.02.10 20:06 Wiktor S.
- 21.02.10 20:26 bartekltg
- 21.02.10 23:53 Mariusz Marszałkowski
- 22.02.10 00:35 Wiktor S.
- 22.02.10 00:38 bartekltg
- 22.02.10 04:15 Mariusz Marszałkowski
- 22.02.10 13:12 bartekltg
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- 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
Najnowsze wątki
- 2025-01-12 Jak na naszych oczach odradza się cenzura :-)
- 2025-01-11 Koszty prowadzenia firmy za granicą
- 2025-01-11 19 migrantów
- 2025-01-11 300km/h
- 2025-01-11 Kongres USA uchwalił "Prawo babci Pawlakowej" na MTK [Lex Gradma Pawlak]
- 2025-01-11 Riga => Specjalista ds. public relations <=
- 2025-01-11 Przestępca wyborczy Musk nadciąga nad Tuskistan?
- 2025-01-11 Białystok => Delphi Programmer <=
- 2025-01-09 Jaka nawigacja z asystentem zmiany pasa ruchu?
- 2025-01-10 Coś dusi.
- 2025-01-09 akumulator napięcie 12.0v
- 2025-01-10 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2025-01-10 Warszawa => Software .Net Developer <=
- 2025-01-10 Białystok => Application Security Engineer <=
- 2025-01-10 Warszawa => System Architect (Java background) <=