optymalizacja gcc?

Tomasz Grobelny grotk w poczta.onet.pl
Czw, 27 Sty 2005, 17:19:33 CET


On Thursday 27 of January 2005 16:13, Pawel Sikora wrote:
> On Thu, 27 Jan 2005, Tomasz Grobelny wrote:
> > On Thursday 27 January 2005 15:47, Pawel Sikora wrote:
> >> On Thu, 27 Jan 2005, Tomasz Grobelny wrote:
> >>> Niech mi ktoś przekonująco wyjaśni dlaczego program zoptymalizowany na
> >>> 686 jest wolniejszsy od zoptymalizowanego dla 586...
> >>>
> >>> $ gcc -O2 -march=i586 -mcpu=i586 crctest.c crc.s
> >>> $ ./a.out
> >>> In C   - CRC = B02F7096, time =     16
> >>> In ASM - CRC = B02F7096, time =     18
> >>> $ gcc -O2 -march=i686 -mcpu=i686 crctest.c crc.s
> >>> $ ./a.out
> >>> In C   - CRC = B02F7096, time =     18
> >>> In ASM - CRC = B02F7096, time =     18
> >>> $
> >>
> >> sprawdz sobie jeszcze -march=i[345]86 (+/- -funroll-all-loops)
> >> 486 powinno byc najwolniesze, bo ztcp. to kompilator rozdklada
> >> punkty skoku w petlach na granicy 16 bajtow i procesor bedzie
> >> mial duzo latania po nop-ach. na 386 i 586 punkty leza na granicy
> >> 8 bajtow. z unrollem powinien mniej skakac, wiec obstawiam,
> >> ze 386/586+unroll beda najszybsze. sprawdz jak masz chec.
> >
> > Zabawa z -funroll-all-loops zaowocowała kolejną ciekawostką:
> > $ gcc -march=i686 -mcpu=i686 -O2 -funroll-all-loops crctest.c crc.s
> > $ ./a.out
> > In C   - CRC = B02F7096, time =     14
> > In ASM - CRC = B02F7096, time =     18
> > $ gcc -march=athlon -mcpu=athlon -O2 -funroll-all-loops crctest.c crc.s
> > $ ./a.out
> > In C   - CRC = B02F7096, time =     16
> > In ASM - CRC = B02F7096, time =     18
> > $
>
> a jak wypadaly 386,486 i 586 z/bez unroll(em/a) ?
http://grobelny.oswiecenia.net/PLD/gcc/

Tomek




Więcej informacji o liście dyskusyjnej pld-devel-pl