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) ?
_______________________________________________
pld-devel-pl mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl