Najlepiej od rzeczy najprostszych, do najbardziej skomplikowanych
![Smiley :)](http://forum.linux.pl/Smileys/default/smiley.gif)
Sprawdź który blok kodu wykonuje się najdłużej i od niego zaczniej optymalizację
Spróbuj w jakiś sposób uprościć pętle, rozwinąć je. Jeśli zależy na wydajności programu, czasem lepiej jest napisać 50 czy 100 linii kodu więcej, co w rezultacie może przyspieszyć działanie programu.
Może da się zamienić warunek z pętlą? (If coś tam, rób pętlę - przeważnie szybciej działa niż sprawdzanie warunku w każdym obiegu pętli, ale nie zawsze da się zastosować)
Zamiast mnożyć czy dzielić przez potęgi 2 czasem szybciej wykonują się przesunięcia bitowe. Właściwie to przeważnie różne działania bitowe są znacznie szybsze od zwykłej arytmetyki, ale skutecznie zacieminają kod
![Wink ;)](http://forum.linux.pl/Smileys/default/wink.gif)
Ogólnie nie zaszkodzi dobra znajomość matematyki i szybszych, ale dokładnych przybliżeń, zamiast obliczania dokładnych wartości, np. jak to miało miejsce w Quake 3
https://pl.wikipedia.org/wiki/Szybka_odwrotno%C5%9B%C4%87_pierwiastka_kwadratowego. No po prostu majstersztyk
![Smiley :)](http://forum.linux.pl/Smileys/default/smiley.gif)
Wstawki assemblerowe również znacznie przyspieszają działanie programu.
No i przede wszystkim warto zadbać o odpowiednie flagi kompilatora. Nawet nie stosując specjalnej optymalizacji kodu samymi flagami też można sporo osiągnąć.