[#1]
[C][SAS/C] Anty-optymalizacja?
Pracujac na Mozaika, przegladalem kod i usuwalem z niego niepotrzebne elementy.
Ku mojemu zaskoczeniu po kompilacji program wynikowy zamiast malec, wprost przeciwnie urusl.
Zdumialo mnie to troche i zaczalem analizowac sprawe.
Znalalzlem i wyodrebnilem taki kawalek kodu (tu tak jak go pozniej testowalem):
#include <stdio.h>
#define UKLADY 16
void PokazUkladyWzorow(void);
void PokazWzor(int Poz_X, int Poz_Y, int P_Wzor);
void PokazUkladyWzorow(void)
{
int x, y, uklad = 0;
for(y = 0; y < 4; y++)
{
for(x = 0; x < 4; x++)
{
if(uklad < UKLADY)
{
PokazWzor(x * 50 + 3, y * 50 + 3, uklad);
uklad++;
}
else return;
}
}
}
Dla czegos takiego kod wynikowy zajmowal 1488 bajtow.
Gdy usunalem ifa i funkcja wygladala tak:
void PokazUkladyWzorow(void)
{
int x, y, uklad = 0;
for(y = 0; y < 4; y++)
{
for(x = 0; x < 4; x++)
{
PokazWzor(x * 50 + 3, y * 50 + 3, uklad);
uklad++;
}
}
}
to kod wynikowy mial 1700 bajtow. To o 212 bajtow wiecej!
Czy ktos moglby mi wytlumaczyc ten fenomen? Ja za bardzo z asma zielony jestem.
Jesli faktycznie tak sie dzieje to jak sie przed tym ustrzec?
Ostatnia aktualizacja: 16.05.2021 15:05:10 przez Phibrizzo