Co jest szybsze?

0

Jak w temacie..

int temp=tab[y][x];
if(objects[temp].test==1)
{
  functi(objects[temp].test_id);
}

czy

if(objects[tab[y][x]].test==1)
{
  functi(objects[tab[y][x]].test_id);
}
0

Zależy od kompilatora. O ile nie używasz jakiegoś Borlanda czy nie wyłączyłeś optymalizacji, obie konstrukcje powinny dać ten sam efekt.

0

2 opcjs

0

MinGW którego dorzucają do Code::Blocks 10.05, na ustawieniach "podstawowych"

1

Jeżeli to jest w ciasnej pętli to przetestuj obydwie konstrukcje i jak jest różnica, to użyj szybszej. Jak nie to użyj czytelniejszej.

1

Jak szaleć to szaleć!

KlasaObiektu *p = &objects[tab[x][y]];
if (p->test == 1)
    functi(p->test_id);

Wydaje mi się, że operacja podwójnego przesunięcia wskaźnika ukryta pod tab[x][y] wykonywana jest na tyle szybko, iż zaprzątanie sobie uwagi taką drobnostką przyniesie wzrost wydajności w granicach niepewności pomiaru. ;)

1

Skompiluj do assemblera i porównaj. Z -O2 pewnie będzie to samo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1