GCC 4.4.0 was released on April 21st. Notable changes include fascinating new optimizations for loops. Particularly, they include the ability for the compiler to automatically rewrite loops to take into account memory layout of the system. I recall distinctly in my Intro to Data Structures CS class the teacher using the example of a two dimensional loop which iterated the "wrong way" (causing many disparate memory look ups and cache-misses) as a classic performance killer.
Example (from GCC's website), GCC is now able to perform the following optimization:
-floop-interchange performs loop interchange transformations on loops. Interchanging two nested loops switches the inner and outer loops. For example, given a loop like:
DO J = 1, M DO I = 1, N A(J, I) = A(J, I) * C ENDDO ENDDO
loop interchange will transform the loop as if the user had written:
DO I = 1, N DO J = 1, M A(J, I) = A(J, I) * C ENDDO ENDDO
Also, GCC 4.4.0 includes many enhancements to its implementation of the C++0x draft standard.
Recent comments
1 day 15 hours ago
5 days 11 hours ago
5 days 11 hours ago
6 days 7 hours ago
1 week 4 days ago
1 week 4 days ago
2 weeks 3 days ago
9 weeks 6 days ago
14 weeks 1 hour ago
16 weeks 5 days ago