Objektumkód -optimalizáló - Object code optimizer
Az objektumkód -optimalizáló , más néven utólagos továbbképzés -optimalizáló, vagy a kód kis részei esetében a kukucskáló -optimalizáló , a forrásnyelvi fordítási lépésből - az objektumkódból vagy a bináris fájlból - veszi a kimenetet, és megpróbálja lecserélni a kód azonosítható részeit. csere kód, amely több algoritmikusan hatékonyabb (általában a nagyobb sebesség).
Példák
- Az " IBM Automatic Binary Optimizer for z/OS" (ABO) 2015-ben mutatkozott be, mint egy élvonalbeli technológia, amelynek célja, hogy optimalizálja a COBOL alkalmazások teljesítményét az IBM Z nagyszámítógépeken, anélkül, hogy újra kellene fordítani a forrást. Fejlett optimalizálási technológiát használ, amelyet a legújabb Enterprise COBOL -ban szállítottak. Az ABO optimalizálja a fordított bináris fájlokat anélkül, hogy befolyásolná a program logikáját. Ennek eredményeként az alkalmazás gyorsabban fut, de a viselkedés változatlan marad, így a tesztelési erőfeszítések csökkenthetők. Az ügyfelek általában nem fordítják újra a kódjuk 100 százalékát, amikor új fordítóra vagy IBM Z hardverszintre frissítenek, így az újra nem fordított kód nem tudja kihasználni az új IBM Z hardver szolgáltatásait. Az ABO segítségével az ügyfeleknek még egy lehetőségük van csökkenteni az üzleti szempontból kritikus COBOL-alkalmazások CPU- kihasználtságát és üzemeltetési költségeit. Kipróbálhatja az ABO-t egy továbbfejlesztett, könnyen használható ABO Trial Cloud Service segítségével, anélkül, hogy telepítené az ABO-t a rendszerére.
- A legkorábbi "COBOL optimalizálót" a Capex Corporation fejlesztette ki az 1970 -es évek közepén a COBOL számára . Ez a fajta optimalizáló ebben az esetben a szabványos IBM COBOL fordító „gyengeségeinek” ismeretétől függött, és ténylegesen kicserélte (vagy javította ) az objektumkódokat egy hatékonyabb kóddal. A pótkódra lehet cserélni egy lineáris táblázatkikeresési egy bináris kereséssel például, vagy néha egyszerűen cserélje viszonylag lassú utasítást ismert gyorsabb, amelyik egyébként funkcionálisan egyenértékű belül kontextusban. Ez a technika ma ismert erőt csökkentése . Például az IBM/360 hardveren az
CLIutasítás az adott modelltől függően kétszer -ötször gyorsabb volt, mint azCLCegybájtos összehasonlításra vonatkozó utasítás.
Előnyök
A meglévő programok újraoptimalizálásának fő előnye az volt, hogy a már lefordított ügyfélprogramok ( objektumkód ) állománya szinte azonnal javítható volt minimális erőfeszítéssel, fix költséggel csökkentve a CPU erőforrásait (a szabadalmaztatott szoftver ára ). Hátránya volt, hogy például a COBOL új kiadásai (feltöltött) karbantartást igényelnek az optimalizáló számára az esetlegesen megváltozott belső COBOL algoritmusok kielégítése érdekében. Azonban, mivel új kibocsátások COBOL fordítóprogramok gyakran egybeesett hardver frissítéseket , a gyorsabb hardver rendszerint több mint ellensúlyozza a felhasználói programok visszatérve az előzetesen optimalizált változat (amíg a támogató optimalizáló adták).
Egyéb optimalizálók
Egyes bináris optimalizálók végrehajtható tömörítést végeznek , ami általános adattömörítési technikákkal csökkenti a bináris fájlok méretét , csökkenti a tárolási követelményeket, valamint az átviteli és betöltési időket, de nem javítja a futási idő teljesítményét. A duplikált könyvtári modulok tényleges összevonása szintén csökkenti a memóriaigényt.
Egyes bináris optimalizálók futásidejű mutatókat ( profilalkotást ) használnak a teljesítmény introspektív javítására a JIT- fordítókhoz hasonló technikákkal .
Legutóbbi fejlemények
A közelmúltban kifejlesztett „bináris optimalizálók” különböző platformokra, amelyek közül néhány újdonságot állít, de ennek ellenére lényegében ugyanazokat a (vagy hasonló) technikákat alkalmazzák, mint korábban leírták:
- IBM Automatic Binary Optimizer for z/OS (ABO) (2015)
- IBM Automatic Binary Optimizer for z/OS (ABO) Trial Cloud Service (2020)
- A Sun Studio bináris kódoptimalizálója - amely előzetesen profilfázist igényel
- Dinamikus bináris optimalizáló tervezése és tervezése - az IBM TJ Watson Res. Központ (2005. február)
- QuaC: Binary Optimization Fast Runtime Code Generation in C - (amely úgy tűnik, hogy néhány elemét JIT)
- DynamoRIO
- COBRA: Adaptív futásidejű bináris optimalizációs keretrendszer többszálú alkalmazásokhoz
- Spike Executable Optimizer (Unix kernel)
- "SOLAR" szoftveroptimalizálás link- és futási időben
- Dynimize: CPU teljesítmény virtualizáció
- BOLT: link utáni optimalizáló az LLVM keretrendszerre épül . A mintán alapuló profilozást alkalmazva a BOLT javítja a valós alkalmazások teljesítményét, még a visszacsatolt irányítású optimalizálással és a link-idejű optimalizálással létrehozott, nagyon optimalizált bináris fájlok esetében is . A GCC és a Clang fordítók esetében a BOLT akár 20,4% -kal gyorsítja bináris fájljait az FDO és LTO mellett, és akár 52,1% -kal, ha a bináris fájlok FDO és LTO nélkül készülnek.