Co to jest optymalizacja programu?
Optymalizacja programu to proces modyfikowania programu komputerowego w sposób, który powoduje szybsze wykonywanie, zużywa mniej zasobów lub ogólnie funkcjonować z wyższym poziomem wydajności. Zadanie optymalizacji można wykonać automatycznie przez niektóre kompilatory języka programowania, celowo za pomocą programu optymalizacji lub ręcznie przez programistów, którzy przechodzą kod źródłowy i próbują wprowadzić konkretne ulepszenia. Ogólnie rzecz biorąc, optymalizacja programu jest przeprowadzana z myślą o określonym końcu, ponieważ istnieje bardzo niewiele ogólnych optymalizacji, które można wykonać w programie, który w pewnym sensie nie zmniejsza zoptymalizowanego stanu innej części programu, co oznacza, że program zwykle może być zoptymalizowany pod kątem użycia prędkości lub zasobów, ale zwykle nie oba. Jednym z komplikacji, które może wystąpić w niektórych rodzajach optymalizacji, jest to, że wiele języków programowania wysokiego poziomu zapewnia tak duży poziom abstrakcji między kodem natywnym a językiem komputerowym, że może być optymalizacjatrudne lub niemożliwe do wdrożenia na wszystkich platformach we wszystkich sytuacjach, szczególnie z interpretowanymi językami, które wykorzystują kompilację Just-in-Time (JIT).
Ważną koncepcją optymalizacji programu jest pomysł, że optymalizacja zwykle ma pewną cenę. Jednym z przykładów tego jest to, że gdy kawałek kodu jest zoptymalizowany do szybszego działania, wzrost prędkości może przynieść cenę czytelności kodu, zużycie pamięci, elastyczność programu lub szereg innych kosztów. Oznacza to, że optymalizacja programu musi być procesem ukierunkowanym, z zamiarem uczynienia jednego aspektu programu działającego w lepszy sposób, jednocześnie chętnie poświęcania wydajności innych aspektów.
Różne rodzaje optymalizacji programu można wykonać na różnych etapach rozwoju programu. Podczas projektowania można przeprowadzić szeroką optymalizację, upewniając się, że program wydaje się działać skutecznie. Kiedy pracaG W rzeczywistym kodzie źródłowym optymalizacje mogą obejmować upewnienie się, że nie ma obcych poleceń, powtarzających się połączeń ani słabo pisanych funkcji. Przy kompilacji wiele optymalizacji jest automatycznie wykonywanych przez kompilator i może być prowadzone za pomocą różnych przełączników lub dyrektyw przez programista.
Automatyczne optymalizacje, które mogą wystąpić w przypadku kompilatora lub programu optymalizacji dedykacji, często mogą obejmować sztuczki, które są zbyt złożone, aby były praktyczne dla programistów ludzkich. Może to obejmować przenoszenie instrukcji w programie, aby były one wykonywane poza zamówieniem pierwotnie napisane, ale w bardziej wydajny sposób dla procesora. Może to również obejmować celowo zmieniające zasoby, takie jak bloki pamięci, aby można było uzyskać do nich szybciej. Większość optymalizacji programu występuje automatycznie na poziomie kompilatora.
Jedna komplikacja z powtarzającą się lub agresywną optymalizacją programu jest to, że po zmodyfikowaniu programu w celu uruchamiania się bardziej wydajnie staje się bardziej di DiFicult do modyfikacji do innych celów, takich jak dodawanie funkcjonalności lub naprawianie błędów. Może się to zdarzyć, gdy optymalizacje zaczynają blokować ustawione zachowania programowe, które nie są łatwe do zmiany ani dostosowywane do nowego kodu, nie wymagając odnalezienia wszystkich optymalizacji. Większy problem polega na tym, że w wielu przypadkach zoptymalizowany program staje się mniej czytany przez człowieka, ponieważ sztuczki i skróty są używane zamiast tylko zwięzłych poleceń i klasycznych struktur kontrolnych. Z tych powodów często istnieje poziom optymalizacji programu, przy którym dopuszczalne jest zatrzymanie, nawet jeśli drastyczne modyfikacje kodu mogą sprawić, że program działał nieco wydajniej.