Optimalizátor kódu objektu - Object code optimizer

Image
Binární optimalizátor převezme stávající výstup z kompilátoru a vytvoří lepší prováděcí soubor se stejnou funkcí.

Objektový kód optimalizace , někdy označovaný také jako pošta propustí optimalizátor , nebo pro malé části kódu, kukátkem optimalizátor , vezme výstup z kompilace kroku zdrojového jazyka - strojový kód nebo binární soubor - a snaží se nahradit identifikovatelné části kódu s náhradním kódem, který je algoritmicky efektivnější (obvykle lepší rychlost).

Příklady

  • IBM Automatic Binary Optimizer for z/OS“ (ABO) byl představen v roce 2015 jako špičková technologie navržená k optimalizaci výkonu aplikací COBOL na sálových počítačích IBM Z bez nutnosti překompilovat zdroj. Využívá pokročilou optimalizační technologii dodávanou v nejnovější verzi Enterprise COBOL. ABO optimalizuje kompilované binární soubory, aniž by to ovlivnilo logiku programu. Výsledkem je, že aplikace běží rychleji, ale chování zůstává nezměněno, takže by bylo možné omezit úsilí při testování. Klienti obvykle při upgradu na novou úroveň hardwaru kompilátoru nebo IBM Z nekompilovají 100 procent svého kódu, takže kód, který není překompilován, by nemohl využívat výhod funkcí nového hardwaru IBM Z. Nyní s ABO mají klienti ještě jednu možnost, jak snížit využití CPU a provozní náklady svých kriticky důležitých aplikací COBOL. ABO si můžete vyzkoušet s vylepšenou, snadno použitelnou cloudovou službou ABO Trial, aniž byste do svého systému nainstalovali ABO.
  • Nejdříve „COBOL Optimizer“ byl vyvinut společností Capex Corporation v polovině 70. let pro COBOL . Tento typ optimalizátoru v tomto případě závisel na znalosti „slabých stránek“ standardního kompilátoru IBM COBOL a ve skutečnosti nahradil (nebo opravil ) části kódu objektu efektivnějším kódem. Nahrazení kód může nahradit lineární vyhledávací tabulky s binární vyhledávání například nebo někdy jednoduše nahradit relativně pomalé instrukci se známým rychleji ten, který byl jinak funkčně rovnocenné ve svém kontextu. Tato technika je nyní známá jako redukce síly . Například na hardwaru IBM/360 byla CLIinstrukce v závislosti na konkrétním modelu dvakrát až pětkrát rychlejší než CLCinstrukce pro jednobajtové srovnání.

Výhody

Hlavní výhodou opětovné optimalizace stávajících programů bylo, že množství již zkompilovaných zákaznických programů ( objektový kód ) bylo možné vylepšit téměř okamžitě s minimálním úsilím, což snížilo zdroje CPU za fixní cenu (cena proprietárního softwaru ). Nevýhodou bylo, že například nová vydání COBOLu by vyžadovala (účtovanou) údržbu optimalizátoru, aby bylo možné vyhovět případným změnám interních algoritmů COBOL. Protože se však nová vydání kompilátorů COBOL často shodovala s upgradem hardwaru , rychlejší hardware by obvykle více než kompenzoval návrat aplikačních programů k jejich předem optimalizovaným verzím (dokud nebyl vydán podpůrný optimalizátor).

Další optimalizátory

Některé binární optimalizátory provádějí spustitelnou kompresi , která zmenšuje velikost binárních souborů pomocí obecných technik komprese dat, snižuje požadavky na úložiště a časy přenosu a načítání, ale nezlepšuje výkon za běhu. Skutečná konsolidace duplicitních modulů knihovny by také snížila nároky na paměť.

Některé binární optimalizátory využívají metriky za běhu ( profilování ) k introspektivnímu zlepšení výkonu pomocí technik podobných kompilátorům JIT .

Nedávný vývoj

Nověji vyvinuté „binární optimalizátory“ pro různé platformy, z nichž některé tvrdí novinku , ale v zásadě používají stejné (nebo podobné) techniky popsané výše, zahrnují:

  • IBM Automatic Binary Optimizer for z/OS (ABO) (2015)
  • Zkušební cloudová služba IBM Automatic Binary Optimizer for z/OS (ABO) (2020)
  • Sun Studio Binary Code Optimizer - který vyžaduje předem profilovou fázi
  • Design and Engineering of a Dynamic Binary Optimizer - from IBM TJ Watson Res. Center (únor 2005)
  • QuaC: Binary Optimization for Fast Runtime Code Generation in C - (což vypadá, že obsahuje některé prvky JIT)
  • DynamoRIO
  • COBRA: Adaptive Runtime Binary Optimization Framework pro vícevláknové aplikace
  • Spike Executable Optimizer (jádro Unixu)
  • „SOLÁRNÍ“ optimalizace softwaru v době propojení a běhu
  • Dynimize: Virtualizace výkonu CPU
  • BOLT: optimalizátor post-link postavený na horní části rámce LLVM . S využitím profilování založeného na vzorku zlepšuje BOLT výkon aplikací v reálném světě, a to i pro vysoce optimalizované binární soubory vytvořené s optimalizací zaměřenou na zpětnou vazbu a optimalizací Link-time . U kompilátorů GCC a Clang zrychluje BOLT jejich binární soubory až o 20,4% nad FDO a LTO a až o 52,1%, pokud jsou binární soubory postaveny bez FDO a LTO.

Viz také

Reference