Talk:Optimizing compiler

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

POV? humans[edit]

"good compilers can often generate better code than human programmers" is a blatant POV. For one, my POV, as a person which way too often looks at assembly output of compilers, is opposite - even "good" compilers often produce visibly suboptimal code, whereas "mediocre" ones emit outright atrocious contraptions. 89.103.73.49 (talk) 16:34, 25 March 2008 (UTC)[reply]

I agree and have removed those POV statements. --Matthiaspaul (talk) 22:16, 3 July 2017 (UTC)[reply]

Something still missing[edit]

dynamic compilation, feedback based optimization, procedural abstraction (and other code-size optimizations generally)

compiler optimzation vs. optimizing compiler[edit]

Wouldn't it be better to discuss this material under optimizing compiler, which is a term in common use? --Robert Merkel


This page is very well written and informative, kudos to the persons who wrote it. And compiler optimization is the correct term. --BL

My modifications[edit]

A real good page, quite informative.Gave me all the info required for my project.My thanks to the writer.[alpha geek]


I've tried to organize and expand this page in a lot of ways. I think compiler optimizations are a very deep field, and each optimization, or at least the more complex ones, deserve their own page giving examples, details, and a full explanation of the algorithm. Look for red links, try to help!

Deco

I think the definition, "Compiler optimization techniques are optimization techniques that have been programmed into a compiler," is rather tautologous. --Random reader

Excellent page on compiler optimization with good links to external pages. Very useful in understanding the concepts. More pointers on how to look at the assembly code from gcc and how to interpret the optimization will be hepful. More external links could also be helpful.

Very good article[edit]

I think with a little review and touching up this article could become featured. --24.239.174.223 22:50, 16 January 2007 (UTC)[reply]

Definition[edit]

I think the definition of compiler optimization can do with some work as its a little disjoint. —Preceding unsigned comment added by 82.46.173.82 (talk) 09:47, 13 December 2007 (UTC)[reply]

SCCP is greater than the sum of its parts[edit]

I've corrected the description of sparse conditional constant propagation (SCCP), which claimed that it's equivalent to iteration of constant propagation, constant folding, and dead-code elimination. In fact, it's more powerful, as the linked Wegman & Zadeck paper shows[1]:

“Many optimizing compilers repeatedly execute constant propagation and unreachable code elimination since each provides information that improves the other. CC solves this problem in an elegant way by combining the two optimizations. Additionally, the algorithm gets better results than are possible by repeated applications of the separate algorithms, as described in Section 5.1.”

(CC is conditional constant propagation, which the authors made “sparse” using SSA.)

Essentially, what can happen is that value A is constant only because block B is dead, but B is dead only because A is constant. Since dataflow and control flow interact, analyzing them in isolation is less informative. — Preceding unsigned comment added by Luke Maurer (talkcontribs) 02:18, 19 January 2016 (UTC)[reply]

References

  1. ^ Wegman, Mark N. and Zadeck, F. Kenneth. "Constant Propagation with Conditional Branches." ACM Transactions on Programming Languages and Systems, 13(2), April 1991, pages 181-210.

To what stack is "stack-height reduction" referring?[edit]

It's described as "[rearranging the] expression tree to minimize resources needed for expression evaluation"; is this referring to the Sethi–Ullman algorithm? If so, whilst, as I remember from a paper I read a long time ago but have been unable to find, you can use that algorithm to generate code that reduces evaluation stack depth on stack machines, but it also can reduce the number of registers used on non-stack machines. (Note that stack (computer science) points to Stack § Computing on the stack disambiguation page. Guy Harris (talk) 19:54, 3 December 2023 (UTC)[reply]

Why does this article exist?[edit]

This is yet another case of a notable thing with an adjective in front of it. And, what compiler doesn't do optimization? This article should be rolled into a section of compiler.

How does such a topic get approved for a new article? I tried to add something real and it was rejected. Very inconsistent policy for adding new articles.

Or ... This article touches on optimization outside of the compiler. So, maybe this article is or should be about optimization in general; not just how compilers optimize; named like Optimization (software) ... Just found program optimization which seems a better place for all of this article's content. ... but program optimization is a case of WP inventing a term as well as notable-thing-with-adjective-in-front. I think the article should be Optimization (something). Stevebroshar (talk) 14:07, 18 May 2024 (UTC)[reply]

And, what compiler doesn't do optimization? What compiler doesn't do code generation? Nevertheless, there's a code generation (compiler) article.
maybe this article is or should be about optimization in general "Optimization" is a term that's used for different things in different consequences. See, for example, mathematical optimization, engineering optimization (which is just a list of further subtopics, some with pages of their own), process optimization, product optimization, search engine optimization, and supply chain optimization. Optimization (disambiguation) has a hatnote suggesting that "optimization" is a broad concept and should have an article about it; I'm not certain that, to quote Wikipedia:Broad-concept article, it's "a broad concept or type of thing that is capable of being described in an article", but the hatnote was put up on 2024-04-23, so let's see how long it takes for somebody to give it a try.
However, that doesn't mean that optimizing compiler should be that article, as that article would have to incorporate all of those different forms of optimization, and would probably become a huge sprawl.
Just found program optimization which seems a better place for all of this article's content That page covers several forms of optimization, most done at levels other than those done by a compiler, with a short section "Compile level" that links to this page; I guess you could stuff this entire page into Program optimization § Compile level, but that might result in an overlong section.
I think the article should be Optimization (something) How about "optimization (compiler)", as per code generation (compiler)? Guy Harris (talk) 18:37, 18 May 2024 (UTC)[reply]
Good stuff. ... I think code generation (compiler) is a relatively good article name. Not sure it deserves to be separate from compiler, but at least code generation is a real term; not just a notable-term-with-an-adjective-in-front (NTWAAIF). ... not _that_ general :) I mean WRT software. I think program optimization is a good topic but not a good article name; it's a NTWAAIF. I think it should be Optimization (computer program). ... Thing is, some of the things in this article (optimizing compiler) are not about the compiler :) Link-time optimizations are about the linker, right? I think it's artificial to separate (computer program) optimizations by tool. I agree with your idea to move the content of this article into program optimization. I think there's a lot of fluff in this article. I think the content can be reduced significantly so that the combined article is not too long/unwieldly. For instance, many of the optimizations have their own articles and so don't need to be explained here, again. What is currently pages of info could be a list of links. Stevebroshar (talk) 03:00, 20 May 2024 (UTC)[reply]
Not sure it deserves to be separate from compiler Compilers, especially ones with sophisticated optimizers and code generators, are large programs, and stuffing everything there is to know about how a compiler works would probably result in a very long and unwieldy article.
I agree with your idea to move the content of this article into program optimization. Even the part where I say "but that might result in an overlong section"? I'm saying it could be done, not that it should be done. I suspect keeping this article, along with code generation (compiler), and perhaps even moving the computer-language parts (plural, as in "all sections from Parsing § Computer languages to Parsing § List of parsing algorithms") of parsing into a separate article, might be the right idea. Guy Harris (talk) 06:25, 20 May 2024 (UTC)[reply]