Article View: pl.comp.lang.c
Article #310016Re: Optymalizacja kodu
From: Maciek Godek
Date: Wed, 25 Dec 2019 21:49
Date: Wed, 25 Dec 2019 21:49
46 lines
4078 bytes
4078 bytes
W dniu środa, 25 grudnia 2019 21:49:10 UTC+1 użytkownik M.M. napisał:
> On Wednesday, December 25, 2019 at 8:52:44 PM UTC+1, Maciek Godek wrote:
> > W dniu środa, 25 grudnia 2019 14:25:07 UTC+1 użytkownik M.M. napisał:
> > > On Wednesday, December 25, 2019 at 12:01:32 PM UTC+1, Maciek Godek wrote:
> > > > W dniu środa, 25 grudnia 2019 11:55:33 UTC+1 użytkownik Maciek Godek napisał:
> > > >
> > > > > - sprawdzić, na ile kosztowna będzie instrukcja warunkowa (może być kosztowna, ale nie musi, bo teoretycznie - na Intelu przynajmniej - kompilator może wciągnąć rejest znaczników w wir operacji arytmetycznych, efektywnie nie wykonując instrukcji skoku warunkowego)
> > > >
> > > > Zresztą nawet w C można to sobie zarytmetyzować:
> > > >
> > > > int x = random() & odpowiednia_maska_bitowa;
> > > > return x - (x > zakres)*(potęga_dwójki - zakres);
> > >
> > > Kiedyś ktoś pokazywał kod w asemblerze jak kompilator zoptymalizował właśnie
> > > operację reszty z dzielenia całkowitego. Nie pamiętam szczegółów, ale efekt
> > > był bardzo imponujący. Nie wiem czy w procesory są wbijane tego typu
> > > optymalizacje, ale na pewno mogą być.
> > >
> > > Teraz mnie zamurowało na widok dużych różnic w czasie z powodu nieznacznych
> > > zmian w kodzie. Tutaj na forum wrzuciłem tylko cztery przykłady, na
> > > szybko wyciągnięte z większego kodu. W ogóle zrobiłem więcej podobnych
> > > eksperymentów i zależność wydajności od drobnych zmian w kodzie jest jeszcze
> > > dziwniejsza. Np. gdy mam własnej roboty wektor a w nim test z funkcją abort:
> > >
> > > T& operator()(const size_t i) {
> > > if( i >= SIZE ) abort();
> > > return data[i];
> > > }
> > >
> > > To działa o 10% szybciej niż gdy mam samo return:
> > >
> > > T& operator()(const size_t i) {
> > > return data[i];
> > > }
> > >
> > > Czyżby kompilator umiał wywnioskować coś o kodzie na podstawie wywołania
> > > abort - wszak to wywołanie znamienne.
> >
> > Ostatnio wrzucałem na pl.comp.programming linka do tej prezentacji:
> > https://www.youtube.com/watch?v=r-TLSBdHe1A
> >
> > Obczaj sobie narzędzia od tego gościa, bo może się okazać, że zmiana katalogu, z którego odpalasz program, będzie miała podobny wpływ na wydajność.
>
> Chyba niemożliwe, zmiana katalogu może mieć 10-cio krotny wpływ na wydajność?
Wcześniej pisałeś, że o 10% szybciej
Technical Details
Message-ID:
<86e65a23-77b4-4037-930a-042ee5fb0bf3@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!g89no8305644qtd.0!news-out.google.com!w29ni52qtc.0!nntp.google.com!g89no8305636qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<ed3041b7-c05f-43f3-887a-9a12a9633741@googlegroups.com> <b010dc08-d015-4a47-88be-75fa3b91cd07@googlegroups.com> <c13192a2-18b8-4342-ad49-6a90cf36a636@googlegroups.com> <ffcbee1e-596b-4120-95ac-ac0d8d2d5e5d@googlegroups.com> <3f8cdd53-6885-4b7d-b87b-1d378ba3f319@googlegroups.com> <699dc753-f600-4656-a749-dca9be4d3668@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:6214:180e:: with SMTP id o14mr32944733qvw.209.1577310568828; Wed, 25 Dec 2019 13:49:28 -0800 (PST) X-Received: by 2002:a81:a210:: with SMTP id w16mr31649011ywg.261.1577310568632; Wed, 25 Dec 2019 13:49:28 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!g89no8305644qtd.0!news-out.google.com!w29ni52qtc.0!nntp.google.com!g89no8305636qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Wed, 25 Dec 2019 13:49:28 -0800 (PST) In-Reply-To: <699dc753-f600-4656-a749-dca9be4d3668@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=83.25.232.15; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 83.25.232.15 References: <ed3041b7-c05f-43f3-887a-9a12a9633741@googlegroups.com> <b010dc08-d015-4a47-88be-75fa3b91cd07@googlegroups.com> <c13192a2-18b8-4342-ad49-6a90cf36a636@googlegroups.com> <ffcbee1e-596b-4120-95ac-ac0d8d2d5e5d@googlegroups.com> <3f8cdd53-6885-4b7d-b87b-1d378ba3f319@googlegroups.com> <699dc753-f600-4656-a749-dca9be4d3668@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <86e65a23-77b4-4037-930a-042ee5fb0bf3@googlegroups.com> Subject: Re: Optymalizacja kodu From: Maciek Godek <godek.maciek@gmail.com> Injection-Date: Wed, 25 Dec 2019 21:49:28 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit