Odpowiedz sobie na początku na pytania:
- co to jest wydajność?
- jak mierzyć wydajność?
- po co chcesz optymalizować?
Czy Twój program jest wydajny, jeśli używa :
a) X RAMu ?
b) 30% CPU ?
c) 40 operacji IO/s ?
Jeśli nie wiesz jak odpowiedzieć na te pytania, to proponuję, żebyś zaczął od teorii i poczytał o złożoności obliczeniowej.
Zastanów się nad 2 przypadkami:
a) masz ograniczone zasoby (RAM/CPU/dyski) - program poprawnie działa, ale czy wykorzystanie zasobów może być mniejsze?
(np. zamiana algorytmu sortowania z bąbelkowego na quick sorta, a może da się uniknąć sortowania kosztem innych zasobów CPU vs RAM i zjechać ze złożonośći czasowej z O(N^2) do O(1) ? )
b) masz zdefiniowane wymagania "program musi rozwiązać problem/ukończyć zadanie w czasie < T" - jakie zasoby dobierzesz? Skąd będziesz wiedział, że już nie ma sensu poprawiać algorytmów i czas zająć się zasobami?
W skrócie, skup się na:
- poprawności rozwiązania, a nie wydajności
- teorii złożoności obliczeniowej