🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72566

Re: gcc i icc

#72566
From: Baranosiu
Date: Mon, 08 Oct 2012 17:37
31 lines
2795 bytes
Dnia 08.10.2012 orcus@pwr.wroc.pl <orcus@pwr.wroc.pl> napisał/a:
> On 2012-10-08, Baranosiu <rad_n@wp.pl> wrote:
>> Żaden kompilator nie zastąpi myślenia :D
>
> Przy sporze o to który samochód może pojechać szybciej
> z 4 osobami i bagażami w środku też można powiedzieć, że
> mój - przecież bez tych 4 osób jest najszybszy...

Samochód może i jest nieco szybszy, ale to w jakim czasie pokonasz
trasę od punktu A do pnktu B zależy też od kierowcy :D

Co do mojego posta: od kilku lat nie używam icc i nie wiem jak on się
ma teraz do gcc, ale nigdy różnica nie była aż 12-krotna :D Autorzy
chyba "na szybko" pisali ten kod w książce (swoją drogą ja bym się
nawet wstydził opublikowac kod z takim formatowaniem :D) i trafił się
przypadek, w którym wyjątkowo icc sobie poradził kilkunastokrotnie
lepiej, więc odpisałem autorowi pytania, że "diabeł" tkwi w samym
indeksowaniu. Gdyby to były tablice zadeklarowane jako c[500][500] i
b[500][500] to szło by jak burza bo wyliczenie adresu elementu jest
proste, a skoro tablice są zadeklarowane jako **b i **c i potem
"ręcznie" są alokowane miejsca dla każdego wiersza z osobna, to te
wiersze nie muszą leżeć w pamięci "jeden za drugim", więc wyliczenie
adresu elementu przestaje być prostym mnożeniem i dodawaniem, tylko
trzeba "pobiegać" po pamięci. GCC akurat jest tak napisany, że
optymalizator lepiej sobie radzi, jeśli wewnątrz pętli zmienia się
ostatni indeks, bo wtedy nie trzeba za każdym razem wyliczać początku
wiersza (choć mógłby też zauważyć, że wyrażenie c[i][j] wewnątrz
najbardziej zagnieżdżonej pętli wskazuje zawsze na ten sam element i
nie trzeba go za każdym razem wyliczać, ale jak się okazuje, przy
niewielkim nakładzie pracy można "nieznacznie" pomóc kompilatorowi i
przyspieszyć kod nawet kilkunastokrotnie :D).
Technical Details
Message-ID: <k4v300$hb3$1@news.task.gda.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.task.gda.pl!not-for-mail
References: <k46i43$pte$1@news.dialog.net.pl> <k4ul0s$glj$1@news.task.gda.pl> <slrnk761gg.tbc.orcus@orcus.wcss.wroc.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.task.gda.pl!not-for-mail
From: Baranosiu <rad_n@wp.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: gcc i icc
Date: Mon, 8 Oct 2012 17:37:06 +0000 (UTC)
Organization: CI TASK http://www.task.gda.pl/
Lines: 31
Message-ID: <k4v300$hb3$1@news.task.gda.pl>
References: <k46i43$pte$1@news.dialog.net.pl> <k4ul0s$glj$1@news.task.gda.pl> <slrnk761gg.tbc.orcus@orcus.wcss.wroc.pl>
Reply-To: Baranosiu <rad_n@wp.pl>
NNTP-Posting-Host: user-164-126-63-157.play-internet.pl
Mime-Version: 1.0
X-Trace: news.task.gda.pl 1349717826 17763 164.126.63.157 (8 Oct 2012 17:37:06 GMT)
X-Complaints-To: abuse@news.task.gda.pl
NNTP-Posting-Date: Mon, 8 Oct 2012 17:37:06 +0000 (UTC)
User-Agent: slrn/pre1.0.0-18 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit