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