Co jest szybsze?

tariel36
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 92
0

Jak w temacie..

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

czy

Kopiuj
if(objects[tab[y][x]].test==1)
{
  functi(objects[tab[y][x]].test_id);
}
Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

2 opcjs

tariel36
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 92
0

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

ZJ
  • Rejestracja: dni
  • Ostatnio: dni
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.

OA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 95
1

Jak szaleć to szaleć!

Kopiuj
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. ;)

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
1

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.