Article View: pl.comp.os.linux.programowanie
Article #72562Re: gcc i icc
From: Krzysztof Halasa
Date: Sat, 29 Sep 2012 19:30
Date: Sat, 29 Sep 2012 19:30
74 lines
3248 bytes
3248 bytes
Adam Majewski <adammaj1@o2.pl> writes: > W książce :Programowanie w Linuksie. Ćwiczenia > Autorzy: Katarzyna Kuźniar, Kazimierz Lal, Tomasz Rak > Data wydania: 2012/07 > http://helion.pl/ksiazki/programowanie-w-linuksie-cwiczenia-katarzyna-kuzniar-kazimierz-lal-tomasz-rak,cwplin.htm > > jest porównanie czsu wykonania programu mnożącego macierze dwuwymiarowe. > Można pobrać przykładowy rozdział w pdf i tam jest ten przykład. > Dla gcc czas = 1345 ms > dla icc czas = 109 ms > > Czyli program skompilowany przez icc wykonywany jest 12 razy szybciej. > > Co o tym sądzicie ? Łatwo sprawdzić. Nie mam niestety maszynki z Phenomem II N620 + 4 GB RAM, najbardziej zbliżona ma nieco wolniejszy zegar i 2 GB RAM: model name : AMD Athlon(tm) II X2 245 Processor cpu MHz : 2200.000 cache size : 1024 KB cpu cores : 2 Tamten ich Phenom jest podobny: model name : AMD Phenom(tm) II N620 Dual-Core Processor cpu MHz : 2800.000 cache size : 1024 KB cpu cores : 2 $ gcc -W -Wall test.c -o test test.c: In function ‘main’: test.c:57:2: warning: implicit declaration of function ‘gettimeofday’ [-Wimplicit-function-declaration] $ ./test 500 500 500 arg[0] = 500 arg[1] = 500 arg[2] = 500 Start Czas: 1375 milisekund No rzeczywiście... tyle że tak jest bez optymalizacji. W normalnych warunkach: $ gcc -O2 -W -Wall test.c -o test $ ./test 500 500 500 Czas: 251 milisekund ... Czas: 340 milisekund Swoją drogą, spore różnice - maszynka jest w tej chwili nieco obciążona, pewnie dlatego. Trzeba będzie się temu przyjrzeć w wolnej chwili. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28071 named 20 0 249m 39m 2948 S 160.7 2.3 5612:36 named Gcc 4.7.2, 64 bity. Kod 32-bitowy: Czas: 519 milisekund Czas: 566 milisekund Czas: 513 milisekund Owszem, widać wyraźnie różnicę między tymi wynikami (w najlepszym przypadku czas gcc to 251 ms / 2800 * 2200 (różnice w zegarach CPU) = ok. 197 ms), ale bez przesady. Nie miałem okazji przetestować z ICC, przypuszczalnie mają tam lepszy optymalizator potrafiący przerobić takie coś na SSE. Złośliwie zauważę, że oni chyba pomylili program pokazujący różnice między kompilatorami z przykładem "jak nie powinien wyglądać program w C", zarówno jeśli chodzi o treść jak i o algorytm :-) -- Krzysztof Halasa
Technical Details
Message-ID:
<m3txugk4om.fsf@intrepid.localdomain>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!not-for-mailReferences:
<k46i43$pte$1@news.dialog.net.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.supermedia.pl!news.nask.pl!news.nask.org.pl!not-for-mail From: Krzysztof Halasa <khc@pm.waw.pl> Newsgroups: pl.comp.os.linux.programowanie Subject: Re: gcc i icc Date: Sat, 29 Sep 2012 21:30:17 +0200 Organization: NASK - www.nask.pl Lines: 74 Message-ID: <m3txugk4om.fsf@intrepid.localdomain> References: <k46i43$pte$1@news.dialog.net.pl> NNTP-Posting-Host: nat.piap.pl Mime-Version: 1.0 X-Trace: pippin.nask.net.pl 1348947021 15267 195.187.100.13 (29 Sep 2012 19:30:21 GMT) X-Complaints-To: abuse ATSIGN nask.pl NNTP-Posting-Date: Sat, 29 Sep 2012 19:30:21 +0000 (UTC) Cancel-Lock: sha1:JCuQia8Qyjqfrf79/kvEgm6zBXQ= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit