Monday 22nd of August, 2011: pencils down.

Today my GSOC adventure comes to an end. For whoever doesn't know, this summer I've been trying to make GCC faster. A task that proved much harder than I initially thought.

My proposal was about doing many small improvements in various parts of the compiler, both in CPU and memory utilisation. All in all I touched parts from the back-end and the middle-end, to the C frontend, but only regarding CPU utilisation. Unfortunately improvements were much less significant than I expected and many things I tried turned out fruitless. Also I didn't have any time left to profile C++ frontend which most people really needed, hopefully it will benefit a tiny bit from the generic changes I have introduced, until I do some actual profiling in the future.

No matter the difficulties, the experience has been very positive for me. I have certainly learned many things about GCC and how to work with the open source community. I even managed to speed-up GCC a little and
finished with a 3-page long TODO list with ideas.

Various results were measured after applying all of my final patches, and making sure the resulting tree (mytrunk) passes all tests on both i386 and x86_64. For anyone that wants to reproduce the tree that I used for final measurements, he should apply all patches I sent the last couple of days, in particular:

http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01711.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01712.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01713.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01714.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01717.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01719.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01722.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01723.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01729.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01740.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01752.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01782.html
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg01796.html


Time and instruction count measurements:

Example compilation of ext4's super.c, in linux-3.0 on x86_64 (-O2 -g):

trunk:          3.177s          7996.5 M instr
mytrunk:        3.059s          7645.0 M instr

Example compilation of tcp_ipv4.c on i386, with flags changed to -O0 and no debug symbols:

trunk:          0.622s          1438.4 M instr
mytrunk:        0.592s          1368.5 M instr

Compiling the whole linux-3.0 tarball on a ramdrive, using make -j NCPUs+1:

trunk:          7:33s
mytrunk:        7:23s


At this point I want to thank Steven Bosscher and Paolo Bonzini for mentoring me, together with jakub, richi, djgpp, lxo and others I'm probably forgetting for helping me on IRC the strangest hours. :-) Thanks also to ICS-FORTH for allowing me to work from the premises of CARV laboratory (www.ics.forth.gr/carv), hopefully I'll be working there for the rest of the year. Finally special thanks to maraz (CC'd) to whom I now owe some bet prize...

But most of all I must thank Google, that gave me the opportunity to get paid while working on Open Source.


I will most likely disappear for the following two weeks or so. I have some exams I must study for, plus I should dedicate some time to other work I have pending. Nevertheless please do send me any comments regarding my project and the patches I submitted since I plan to stay in contact with the GCC community, and I'll try addressing them the soonest possible. I also plan to update the performance related pages on the wiki, hopefully
other people will find information on GCC performance useful.


Dimitris

Reply via email to