To install click the Add extension button. That's it.

The source code for the WIKI 2 extension is being checked by specialists of the Mozilla Foundation, Google, and Apple. You could also do it yourself at any point in time.

4,5
Kelly Slayton
Congratulations on this excellent venture… what a great idea!
Alexander Grigorievskiy
I use WIKI 2 every day and almost forgot how the original Wikipedia looks like.
Live Statistics
English Articles
Improved in 24 Hours
Added in 24 Hours
Languages
Recent
Show all languages
What we do. Every page goes through several hundred of perfecting techniques; in live mode. Quite the same Wikipedia. Just better.
.
Leo
Newton
Brights
Milds

Object code optimizer

From Wikipedia, the free encyclopedia

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 the source language compile step - the object code or binary file - and tries to replace identifiable sections of the code with replacement code that is more algorithmically efficient (usually improved speed).

YouTube Encyclopedic

  • 1/3
    Views:
    154 897
    725 906
    45 691
  • Code Optimisation technique | Compiler Design | Lec-51 | Bhanu Priya
  • Premature Optimization
  • Introduction to Code Optimization | Compiler Design

Transcription

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 "weaknesses" in the standard IBM COBOL compiler, and actually replaced (or patched) sections of the object code with more efficient code. The replacement code might replace a linear table lookup with a 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 CLI instruction was, depending on the particular model, between twice and 5 times as fast as a CLC instruction for single byte comparisons.[1][2]

Advantages

The main advantage of re-optimizing existing programs was that the stock of already compiled customer programs (object code) could be improved almost instantly with minimal effort, reducing CPU resources at a fixed cost (the price of the proprietary software). A disadvantage was that new releases of COBOL, for example, would require (charged) maintenance to the optimizer to cater for possibly changed internal COBOL algorithms. However, since new releases of COBOL compilers frequently coincided with hardware upgrades, the faster hardware would usually more than compensate for the application programs reverting to their pre-optimized versions (until a supporting optimizer was released).

Other optimizers

Some binary optimizers do executable compression, which reduces the size of binary files using generic data compression techniques, reducing storage requirements and transfer and loading times, but not improving run-time performance. Actual consolidation of duplicate library modules would also reduce memory requirements.

Some binary optimizers utilize run-time metrics (profiling) to introspectively improve performance using techniques similar to JIT compilers.

Recent developments

More recently developed "binary optimizers" for various platforms, some claiming novelty but, nevertheless, essentially using the same (or similar) techniques described above, include:

  • IBM Automatic Binary Optimizer for z/OS (ABO) (2015)[3]
  • IBM Automatic Binary Optimizer for z/OS (ABO) Trial Cloud Service (2020)[4]
  • The Sun Studio Binary Code Optimizer[5] — which requires a profile phase beforehand
  • Design and Engineering of a Dynamic Binary Optimizer — from IBM T. J. Watson Res. Center (February 2005)[6][7]
  • QuaC: Binary Optimization for Fast Runtime Code Generation in C[8] — (which appears to include some elements of JIT)
  • DynamoRIO
  • COBRA: An Adaptive Runtime Binary Optimization Framework for Multithreaded Applications[9]
  • Spike Executable Optimizer (Unix kernel)[10]
  • "SOLAR" Software Optimization at Link-time And Run-time[11]
  • Dynimize: CPU Performance Virtualization[12]
  • 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 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.[13]

See also

References

  1. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2010-07-11. Retrieved 2010-01-07.{{cite web}}: CS1 maint: archived copy as title (link)
  2. ^ Evans, Michael (1982-12-01). "Software engineering for the Cobol environment". Communications of the ACM. 25 (12): 874–882. doi:10.1145/358728.358732. S2CID 17268690. Archived from the original on 2021-10-27. Retrieved 2021-10-27.
  3. ^ "IBM Automatic Binary Optimizer for z/OS - Overview". www.ibm.com. 2015. Archived from the original on 2020-10-18. Retrieved 2020-05-15.
  4. ^ "IBM Automatic Binary Optimizer for z/OS Trial Cloud Service". optimizer.ibm.com. 2020. Archived from the original on 2021-01-19. Retrieved 2021-10-27.
  5. ^ "The Binary Code Optimizer". Archived from the original on 2010-07-22. Retrieved 2010-01-07.
  6. ^ Duesterwald, E. (2005). "Design and Engineering of a Dynamic Binary Optimizer". Proceedings of the IEEE. 93 (2): 436–448. doi:10.1109/JPROC.2004.840302. S2CID 2217101.
  7. ^ Xu, Chaohao; Li, Jianhui; Bao, Tao; Wang, Yun; Huang, Bo (2007-06-13). "Metadata driven memory optimizations in dynamic binary translator". Proceedings of the 3rd international conference on Virtual execution environments - VEE '07. Association for Computing Machinery. pp. 148–157. doi:10.1145/1254810.1254831. ISBN 978-1-59593630-1. S2CID 15234434. Archived from the original on 2021-10-27. Retrieved 2021-10-27 – via ACM Digital Library.
  8. ^ "Archived copy" (PDF). Archived (PDF) from the original on 2009-04-19. Retrieved 2010-01-07.{{cite web}}: CS1 maint: archived copy as title (link)
  9. ^ Kim, Jinpyo; Hsu, Wei-Chung; Yew, Pen-Chung (2007). "COBRA: An Adaptive Runtime Binary Optimization Framework for Multithreaded Applications". 2007 International Conference on Parallel Processing (ICPP 2007). p. 25. doi:10.1109/ICPP.2007.23. ISBN 978-0-7695-2933-2. S2CID 15079211.
  10. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2010-09-11. Retrieved 2010-01-07.{{cite web}}: CS1 maint: archived copy as title (link)
  11. ^ ""SOLAR" Software Optimization at Link-time And Run-time". Archived from the original on 2016-02-14.
  12. ^ "Dynimize Product Overview". dynimize.com. Archived from the original on 2021-10-25. Retrieved 2021-04-26.
  13. ^ Panchenko, Maksim; Auler, Rafael; Nell, Bill; Ottoni, Guilherme (2019-02-16). "BOLT: A Practical Binary Optimizer for Data Centers and Beyond". 2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO). pp. 2–14. arXiv:1807.06735. doi:10.1109/CGO.2019.8661201. ISBN 978-1-7281-1436-1. S2CID 49869552.
This page was last edited on 7 April 2024, at 05:42
Basis of this page is in Wikipedia. Text is available under the CC BY-SA 3.0 Unported License. Non-text media are available under their specified licenses. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. WIKI 2 is an independent company and has no affiliation with Wikimedia Foundation.