Object code optimizer: Difference between revisions

Content deleted Content added
Reflinks: Converting bare references
Filled in 7 bare reference(s) with reFill 2
Line 9:
==Examples==
 
* "[[IBM]] Automatic Binary Optimizer for z/OS<ref name=autogenerated1>[{{Cite web|url=https://www.ibm.com/products/automatic-binary-optimizer-zos |title=IBM Automatic Binary Optimizer for z/OS - Overview | IBM<!-- Bot generated title -->]website=www.ibm.com}}</ref>" (ABO) was introduced in 2015 as a cutting-edge technology designed to optimize the performance of [[COBOL]] applications on [[IBM Z]]<ref>[{{Cite web|url=https://www.ibm.com/it-infrastructure/z |title=IBM Z Mainframe Servers and Software | IBM<!-- Bot generated title -->]website=www.ibm.com}}</ref> mainframes without the need for recompiling source. It uses advanced optimization technology shipped in the latest Enterprise COBOL.<ref>[{{Cite web|url=https://www.ibm.com/us-enproducts/marketplace/ibm-cobol -compiler-zos|title=IBM Enterprise COBOL for z/OS - Overview | IBM<!-- Bot generated title -->]website=www.ibm.com}}</ref> ABO optimizes compiled [[binaries]] without affecting program logic. As a result, the application runs faster but behavior remains unchanged so testing effort could be reduced. Clients normally don't [[recompile]] 100 percent of their code when they upgrade to new compiler or IBM Z hardware levels, so code that's not recompiled wouldn't be able to take advantage of features in new IBM Z hardware. Now with ABO, clients have one more option to reduce [[CPU]] utilization and operating costs of their business-critical COBOL applications. You can try ABO out with an improved, easy-to-use ABO Trial Cloud Service <ref name=autogenerated2>{{Cite web|url=https://optimizer.ibm.com/|title=IBM Automatic Binary Optimizer for z/OS Trial Cloud Service|website=optimizer.ibm.com}}</ref> without installing ABO on your system.
* The earliest "COBOL Optimizer" was developed by [[Capex Corporation]] in the mid 1970s for [[COBOL]]. This type of optimizer depended, in this case, upon knowledge of 'weaknesses' in the standard IBM COBOL compiler, and actually replaced (or [[patch (computing)|patch]]ed) sections of the object code with more efficient code. The replacement code might replace a linear [[lookup table|table lookup]] with a [[binary search algorithm|binary search]] for example or sometimes simply replace a relatively slow instruction with a known faster one that was otherwise functionally equivalent within its context. This technique is now known as [[strength reduction]]. For example, on the [[IBM/360]] hardware the <code>CLI</code> instruction was, depending on the particular model, between twice and 5 times as fast as a <code>CLC</code> instruction for single byte comparisons.<ref>{{Cite web |url=http://www.bitsavers.org/pdf/ibm/360/A22_6825-1_360instrTiming.pdf |title=Archived copy |access-date=2010-01-07 |archive-date=2010-07-11 |archive-url=https://web.archive.org/web/20100711101128/http://bitsavers.org/pdf/ibm/360/A22_6825-1_360instrTiming.pdf |url-status=dead }}</ref><ref>http{{Cite journal|url=https://portal.acmdoi.org/citation10.1145/358728.cfm?id=358732&dl|title=GUIDE&dlSoftware engineering for the Cobol environment|first=Michael|last=Evans|date=1 December 1982|journal=Communications of the ACM|volume=25|issue=12|pages=874–882|via=Dec 1982|doi=10.1145/358728.358732}}</ref>
 
===Advantages===
Line 28:
* [[IBM]] Automatic Binary Optimizer for z/OS (ABO)Trial Cloud Service (2020)<ref name=autogenerated2 />
* [[The Sun Studio Binary Code Optimizer]]<ref>http://developers.sun.com/solaris/articles/binopt.html</ref> - which requires a [[software performance analysis|profile]] phase beforehand
* Design and Engineering of a Dynamic Binary Optimizer - from [[IBM]] T. J. Watson Res. Center (February 2005)<ref>{{Cite journal |doi = 10.1109/JPROC.2004.840302|title = Design and Engineering of a Dynamic Binary Optimizer|year = 2005|last1 = Duesterwald|first1 = E.|journal = Proceedings of the IEEE|volume = 93|issue = 2|pages = 436–448|s2cid = 2217101}}</ref><ref>http{{Cite web|url=https://portal.acmdoi.org/citation10.cfm?id1145/1254810.1254831|title=Metadata driven memory optimizations in dynamic binary translator|first1=Chaohao|last1=Xu|first2=Jianhui|last2=Li|first3=Tao|last3=Bao|first4=Yun|last4=Wang|first5=Bo|last5=Huang|date=13 June 2007|publisher=Association for Computing Machinery|pages=148–157|via=ACM Digital Library|doi=10.1145/1254810.1254831}}</ref>
* QuaC: Binary Optimization for Fast [[self-modifying code|Runtime Code Generation]] in [[C (programming language)|C]]<ref>http://www.eecs.berkeley.edu/Pubs/TechRpts/1994/CSD-94-792.pdf</ref> - (which appears to include some elements of JIT)
* [[DynamoRIO]]
Line 34:
* Spike Executable Optimizer (Unix kernel)<ref>http://www.cesr.ncsu.edu/fddo4/papers/spike_fddo4.pdf</ref>
* [https://web.archive.org/web/20160214082946/http://www.cs.arizona.edu/solar/ "SOLAR" Software Optimization at Link-time And Run-time]
* Dynimize: CPU Performance Virtualization<ref>{{Cite web|url=https://dynimize.com/product|title=Dynimize Product Overview|website=dynimize.com}}</ref>
* BOLT: post-link optimizer built on top of the [[LLVM]] framework. Utilizing sample-based profiling, BOLT improves the performance of real-world applications even for highly optimized binaries built with both [[Feedback Directed Optimization]] and [[Link-time optimization]]. For [[GCC]]{{dn|date=October 2021}} and [[Clang]] compilers, BOLT speeds up their binaries by up to 20.4% on top of FDO and LTO, and up to 52.1% if the binaries are built without FDO and LTO.<ref name="CGO19">{{cite journal |last1=Panchenko |first1=Maksim |last2=Auler |first2=Rafael |last3=Nell |first3=Bill |last4=Ottoni |first4=Guilherme |title=BOLT: a practical binary optimizer for data centers and beyond |journal=Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization |date=16 February 2019 |pages=2–14 |doi=10.1109/CGO.2019.8661201 |arxiv=1807.06735 |isbn=978-1-7281-1436-1 |s2cid=49869552 }}</ref>