Optymalizator kodu obiektowego - Object code optimizer

Image
Optymalizator binarny pobiera istniejące dane wyjściowe z kompilatora i tworzy lepszy plik wykonawczy z taką samą funkcjonalnością.

Optymalizacji kodu wynikowego , czasami znany również jako optymalizator po towarzysza lub do małych fragmentów kodu, wizjer optymalizator bierze wyjście z etapu język kompilowany źródłowy - kod wynikowy lub plik binarny - i stara się zastąpić identyfikowalne fragmenty kodu z kodem zastępczym, który jest bardziej wydajny algorytmicznie (zwykle zwiększona szybkość).

Przykłady

  • IBM Automatic Binary Optimizer for z/OS” (ABO) został wprowadzony w 2015 r. jako najnowocześniejsza technologia zaprojektowana w celu optymalizacji wydajności aplikacji COBOL na komputerach mainframe IBM Z bez konieczności ponownego kompilowania źródła. Wykorzystuje zaawansowaną technologię optymalizacji dostarczaną w najnowszej wersji Enterprise COBOL. ABO optymalizuje skompilowane pliki binarne bez wpływu na logikę programu. W rezultacie aplikacja działa szybciej, ale zachowanie pozostaje niezmienione, więc wysiłek związany z testowaniem może zostać zmniejszony. Klienci zwykle nie rekompilują 100% swojego kodu podczas uaktualniania do nowego kompilatora lub poziomów sprzętowych IBM Z, więc kod, który nie zostanie ponownie skompilowany, nie będzie mógł korzystać z funkcji nowego sprzętu IBM Z. Teraz dzięki ABO klienci mają jeszcze jedną możliwość zmniejszenia wykorzystania procesora i kosztów operacyjnych swoich krytycznych dla biznesu aplikacji COBOL. Możesz wypróbować ABO dzięki ulepszonej, łatwej w użyciu ABO Trial Cloud Service bez instalowania ABO w swoim systemie.
  • Najwcześniejszy „COBOL Optimizer” został opracowany przez Capex Corporation w połowie lat 70. dla COBOL . Ten typ optymalizatora zależał w tym przypadku od znajomości „słabości” standardowego kompilatora IBM COBOL i faktycznie zastępował (lub załatał ) sekcje kodu wynikowego bardziej wydajnym kodem. Kod wymiana może zastąpić liniowej odnośnika tabeli z binarnego wyszukiwania , na przykład, a czasem po prostu zastąpić stosunkowo powolny dyspozycję ze znaną szybciej, którą można było inaczej funkcjonalny odpowiednik w jego kontekście. Ta technika jest obecnie znana jako redukcja wytrzymałości . Na przykład na sprzęcie IBM/360CLI instrukcja była, w zależności od konkretnego modelu, od 2 do 5 razy szybsza niż CLCinstrukcja do porównań pojedynczych bajtów.

Zalety

Główną zaletą ponownej optymalizacji istniejących programów było to, że zapas już skompilowanych programów klienta ( kod obiektowy ) mógł zostać poprawiony niemal natychmiast przy minimalnym wysiłku, redukując zasoby procesora przy stałym koszcie (cena oprogramowania własnościowego ). Wadą było to, że na przykład nowe wersje języka COBOL wymagałyby (odpłatnej) obsługi optymalizatora w celu uwzględnienia ewentualnych zmienionych wewnętrznych algorytmów języka COBOL. Jednakże, ponieważ nowe wydania kompilatorów COBOL często zbiegały się z aktualizacjami sprzętu , szybszy sprzęt zazwyczaj z nawiązką rekompensował powrót aplikacji do ich wstępnie zoptymalizowanych wersji (do czasu wydania wspierającego optymalizatora).

Inne optymalizatory

Niektóre optymalizatory plików binarnych stosują kompresję wykonywalną , która zmniejsza rozmiar plików binarnych przy użyciu ogólnych technik kompresji danych , zmniejszając wymagania dotyczące pamięci oraz czas przesyłania i ładowania, ale nie poprawiając wydajności w czasie wykonywania. Faktyczna konsolidacja zduplikowanych modułów bibliotecznych również zmniejszyłaby wymagania dotyczące pamięci.

Niektóre optymalizatory binarne wykorzystują metryki czasu wykonywania ( profilowanie ), aby introspektywnie poprawiać wydajność przy użyciu technik podobnych do kompilatorów JIT .

Ostatnie zmiany

Niedawno opracowane „optymalizatory binarne” dla różnych platform, niektóre twierdzące, że są nowością, ale jednak zasadniczo wykorzystują te same (lub podobne) techniki opisane powyżej, obejmują:

Zobacz też

Bibliografia