Objektkodeoptimering - Object code optimizer

Image
En binær optimizer tager det eksisterende output fra en compiler og producerer en bedre udførelsesfil med den samme funktionalitet.

En objektkodeoptimering , undertiden også kendt som en efterpasoptimering eller, for små dele af koden, kighuloptimering , tager output fra et kilde sprogkompileringstrin - objektkoden eller binærfil - og forsøger at erstatte identificerbare sektioner af koden med erstatningskode, der er mere algoritmisk effektiv (normalt forbedret hastighed).

Eksempler

  • " IBM Automatic Binary Optimizer for z/OS" (ABO) blev introduceret i 2015 som en banebrydende teknologi designet til at optimere ydeevnen for COBOL- applikationer på IBM Z- mainframes uden behov for omkompilering af kilde. Den bruger avanceret optimeringsteknologi, der leveres i den nyeste Enterprise COBOL. ABO optimerer kompilerede binærfiler uden at påvirke programlogikken. Som et resultat kører applikationen hurtigere, men adfærden forbliver uændret, så testindsatsen kan reduceres. Klienter rekompilerer normalt ikke 100 procent af deres kode, når de opgraderer til ny compiler eller IBM Z -hardwareniveauer, så kode, der ikke genkompileres, ville ikke kunne drage fordel af funktioner i ny IBM Z -hardware. Nu med ABO har kunderne endnu en mulighed for at reducere CPU- udnyttelse og driftsomkostninger for deres forretningskritiske COBOL-applikationer. Du kan prøve ABO med en forbedret, brugervenlig ABO Trial Cloud Service uden at installere ABO på dit system.
  • Den tidligste "COBOL Optimizer" blev udviklet af Capex Corporation i midten af ​​1970'erne til COBOL . Denne type optimeringsprogram afhængede i dette tilfælde af kendskab til 'svagheder' i standard IBM COBOL -kompilatoren og erstattede (eller patched ) sektioner af objektkoden med mere effektiv kode. Udskiftningskoden kan f.eks. Erstatte et lineært tabelopslag med en binær søgning eller nogle gange blot erstatte en relativt langsom instruktion med en kendt hurtigere instruktion, der ellers var funktionelt ækvivalent inden for sin kontekst. Denne teknik er nu kendt som styrkereduktion . For eksempel på IBM/360 -hardware var CLIinstruktionen, afhængigt af den særlige model, mellem to og fem gange så hurtig som en CLCinstruktion til sammenligning af enkeltbyte.

Fordele

Den største fordel ved at genoptimere eksisterende programmer var, at lageret af allerede kompilerede kundeprogrammer ( objektkode ) kunne forbedres næsten øjeblikkeligt med minimal indsats og reducere CPU- ressourcer til en fast pris (prisen på den proprietære software ). En ulempe var, at nye udgivelser af COBOL f.eks. Ville kræve (opkrævet) vedligeholdelse af optimeren for at imødekomme muligvis ændrede interne COBOL -algoritmer. Men da nye versioner af COBOL compilere ofte faldt sammen med hardware opgraderinger , jo hurtigere hardware ville normalt mere end kompensere for programmer reverterende til deres pre-optimerede versioner (indtil en understøttende optimizer blev udgivet).

Andre optimatorer

Nogle binære optimeringsprogrammer udfører eksekverbar komprimering , hvilket reducerer størrelsen af binære filer ved hjælp af generiske datakomprimeringsteknikker , reducerer lagringskrav og overførsels- og indlæsningstider, men forbedrer ikke køretidens ydeevne. Faktisk konsolidering af dublerede biblioteksmoduler ville også reducere hukommelseskravene.

Nogle binære optimeringsprogrammer anvender driftstidsmetrikker ( profilering ) til introspektivt at forbedre ydeevnen ved hjælp af teknikker, der ligner JIT- kompilatorer.

Seneste udvikling

Nyligt udviklede 'binære optimatorer' til forskellige platforme, nogle hævder nyhed, men ikke desto mindre hovedsageligt ved hjælp af de samme (eller lignende) teknikker beskrevet ovenfor, omfatter:

  • IBM Automatic Binary Optimizer til z/OS (ABO) (2015)
  • IBM Automatic Binary Optimizer til z/OS (ABO) Trial Cloud Service (2020)
  • Sun Studio Binary Code Optimizer - som på forhånd kræver en profilfase
  • Design og konstruktion af en dynamisk binær optimering - fra IBM TJ Watson Res. Center (februar 2005)
  • QuaC: Binær optimering til hurtig generering af kodekode i C - (som synes at indeholde nogle elementer i JIT)
  • DynamoRIO
  • COBRA: An Adaptive Runtime Binary Optimization Framework for Multithreaded Applications
  • Spike Executable Optimizer (Unix -kerne)
  • "SOLAR" softwareoptimering ved link-tid og løbetid
  • Dynamiser: CPU Performance Virtualization
  • BOLT: post-link optimizer bygget oven på LLVM- rammerne. Ved hjælp af prøvebaseret profilering forbedrer BOLT ydeevnen for virkelige applikationer, selv for stærkt optimerede binærfiler, der er bygget med både Feedback Directed Optimization og Link-time optimering . For GCC- og Clang -kompilatorer fremskynder BOLT deres binære filer med op til 20,4% oven på FDO og LTO og op til 52,1%, hvis binærerne er bygget uden FDO og LTO.

Se også

Referencer