optymalizacja gcc?

Pawel Sikora pluto w pld-linux.org
Czw, 27 Sty 2005, 16:13:25 CET


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) ?


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