GCC 4.9.0 released
gcc.gnu.org
gcc.gnu.org
Why does using LTO reduce link time? It would expect the result to be smaller, but transient memory usage to be significantly higher.
GCC 4.9 provides a complete implementation of the Go 1.2.1 release.Though it would be interesting to see hard benchmarks. As is I have found performance regressions when compiling with prior versions of gccgo, as compared to gc.
|Memory usage building Firefox with debug enabled was reduced from 15GB to 3.5GB; link time from 1700 seconds to 350 seconds.
That's pretty impressive.
Larger projects could stand to gain more from LTO because the code will likely be spread across many more files. As a result, the compiler is only seeing a very small percentage of the code when it compiles each file. Potentially then, the compiler is missing out more optimisations.
In very large projects, fully optimizing all the code is often unneeded, and bad because fully optimized code is larger (inlining, unrolled loops, etc.). PGO lets you find what actually needs to be optimized, and you can keep the rest compact to improve load times. Vice versa, PGO can tell you what code is run immediately on load so you can order it so that happens faster, etc.
Similarly, LTO is most useful in large projects where it is not obvious to the compiler how to optimize across compilation unit boundaries - as in a small enough project, either there are few such boundaries or it is easy to manually optimize for them.
Makefile seems like you have to code every new addition in your build manually and take care of the dependency tree.
Eclipse CDT seems difficult to set up.
Ant doesn't seem like good C/C++ Make options and require lots of XML and extra plugins to get it work.
Scons seems like a good option. Haven't tried Maven. What do you guys use to do C/C++ builds for production or for fun?
Although it's discouraged, CMake does have a way around the "code every new addition in your build manually" problem: http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:au...