Content deleted Content added
Citation bot (talk | contribs) Alter: title, url. URLs might have been anonymized. Add: archive-date, archive-url. | Use this bot. Report bugs. | Suggested by BrownHairedGirl | #UCB_webform 2746/3819 |
m ca |
||
(12 intermediate revisions by 9 users not shown) | |||
Line 1:
{{Short description|Aspect of software compilation}}
{{Multiple issues|
{{original research|date=November 2016}}
Line 6 ⟶ 7:
{{Use list-defined references|date=August 2022}}
[[Image:Binary optimizer.png|thumb|180px|A binary optimizer takes the existing output from a compiler and produces a better execution file with the same functionality.]]
An '''object code optimizer''', sometimes also known as a '''post pass optimizer''' or, for small sections of code, [[peephole optimizer]], forms part of a software [[compiler]]. It takes the output from
==Examples==
* 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
▲* 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 name="IBM"/><ref name="Evans_1982"/>
===Advantages===
Line 25:
===Recent developments===
More recently developed
* [[IBM]]
* [[IBM]]
*
* Design and Engineering of a Dynamic Binary Optimizer — from [[IBM]] T. J. Watson Res. Center (February 2005)<ref name="Duesterwald_2005"/><ref name="Xu-Li-Bao-Wang-Huang_2007"/>
* QuaC:
* [[DynamoRIO]]
* COBRA:
* Spike
* "SOLAR"
* Dynimize: CPU
* 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
==See also==
Line 47:
<ref name="IBM_ABO_2015">{{cite web |date=2015 |url=https://www.ibm.com/products/automatic-binary-optimizer-zos |title=IBM Automatic Binary Optimizer for z/OS - Overview |website=www.ibm.com |access-date=2020-05-15 |archive-date=2020-10-18 |archive-url=https://web.archive.org/web/20201018172402/https://www.ibm.com/products/automatic-binary-optimizer-zos |url-status=live}}</ref>
<ref name="IBM_ABO_2020">{{cite web |date=2020 |url=https://optimizer.ibm.com/ |title=IBM Automatic Binary Optimizer for z/OS Trial Cloud Service |website=optimizer.ibm.com |access-date=2021-10-27 |archive-date=2021-01-19 |archive-url=https://web.archive.org/web/20210119201500/https://optimizer.ibm.com/ |url-status=live}}</ref>
<ref name="Panchenko-Auler_2019">{{cite
<ref name="IBM">{{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 name="Evans_1982">{{cite journal
<ref name="Binopt">{{cite web |url=http://developers.sun.com/solaris/articles/binopt.html |title=The Binary Code Optimizer |access-date=2010-01-07 |archive-date=2010-07-22 |archive-url=https://web.archive.org/web/20100722060415/http://developers.sun.com/solaris/articles/binopt.html |url-status=live}}</ref>
<ref name="Duesterwald_2005">{{cite journal |doi=10.1109/JPROC.2004.840302 |title=Design and Engineering of a Dynamic Binary Optimizer |date=2005 |author-last=Duesterwald |author-first=E. |journal=Proceedings of the IEEE |volume=93 |issue=2 |pages=436–448 |s2cid=2217101}}</ref>
|