Optymalizacja kodu - makra

0

Witam.

Zetknąłem się ostatnio z małym problemem: mam za zadanie przyśpieszyć taki fragment kodu:

 
for (int i=0; i<1000000; ++i)
{
     int j = cos();
     if (j==0) funkcja0();
         else if (j==1) funkcja1();
              else if (j==2) funkcja2();
}

"Coś" jest funkcją, która zwraca 0, 1 lub 2. Po zastanowieniu doszedłem do wniosku, iż najlepszym rozwiązaniem byłoby zastosowanie makra, które pobierałoby wynik funkcji "Coś" i dołączało go jako łańcuch znaków do części nazwy funkcji, jaka byłaby wywoływana (na przykład, jeśli j == 0 to makro wywoływałoby funkcja0). Czy napisanie takiego makra jest w ogóle możliwe? Próbowałem, niestety udało mi się tylko napisać makro, które jawnie przyjmuje liczbę jako argument. A może kod ten da się przyśpieszyć w inny sposób?
Będę wdzięczny za pomoc.

2
typedef void (*funkcja)();
funkcja funkcje[3] = {funkcja0,funkcja1,funkcja2};
for (int i=0; i<1000000; ++i)
{
     funkcje[cos()]();
}

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