[#31]
Re: [C, RTG] Różne tryby ekranu 16, 24, 32 bpp - a grafika w programie.
@mateusz_s,
post #30
Wracajac jeszcze do problemu z tego watku: Udalo mi sie powtorzyc problem na moim gcc. Troche inny kod ale rezultat ten sam. I szczerze mowiac nie mam pojecia czemu gcc sie gubi w tym wypadku. Jedyne co moge Ci poradzic, to zebys nie uzywal zmiennych globalnych. Jesli szerokosc/wysokosc przekazesz jako parametry do funkcji, lub jesli zrobisz lokalna kopie tych zmiennych przed petla i uzyjesz do warunkowania petli i indeksowania tablicy - gcc generuje optymalny kod:
.L57:
move.l d0,(a0)+
dbra d7,.L57
Mozesz jeszcze sprobowac -funroll-all-loops, zeby zobaczyc co sie stanie z petla, ale tu bym byl ostrozny: duzo zalezy od wielkosci petli i tego co sie w niej dzieje. Krotkie petle zazwyczaj wychodza niezle.
W przypadku twojego kodu:
normalna petla (juz taka optymalna, bez mnozen w srodku):
TEST 1: 3134.400 fps (time: 5s)
z -funroll-all-loops
TEST 1: 4645.800 fps (time: 5s)