On Wed, Apr 27, 2011 at 3:06 PM, Dimitrios Apostolou <ji...@gmx.net> wrote: > Hello list, > > I am Dimitris (IRC nick: jimis), and this summer I will be working on > optimising GCC, under the umbrella of Google Summer of Code. My proposal > involves profiling and benchmarking in order to detect hotspots in both CPU > and memory usage, and improving or rewriting the respective parts. By > combining many partial improvements in all layers of GCC, hopefully by the > end of summer a significant gain will show up. > > Here are some areas I'll look closer to, as shown by some early profiling I > performed: > > * hash tables (both htab and symtab) > * ggc_internal_alloc_stat() or maybe implementing proper memory management > instead of garbage collection, for hottest callers > * _cpp_lex_token/direct() > * ira_build(), got to understand better the problem of register allocation > and the algorithm GCC is using, before trying to improve it > * bitmaps > * coerce_template_parms in g++ (thanks jason!) > > Of course more areas for improvement will hopefully show up with further > profiling. However at the present time I would appreciate the help of the > community in the following areas: > > * what documentation should I read for understanding GCC, from a high level, > architectural point of view? > * I am sure that each one of you has different opinions on which parts > should be improved. What do you propose? > * Speedup_areas wiki page is very interesting, but lacks measurements to > help me assess the weight of each area mentioned. Any comments on those?
General comment: wiki pages tend to be outdated > * How can I access already available work regarding optimisation? For > example I just learned about --enable-gather-detailed-mem-stats (jason on > IRC told me), or I see that general statistics in htab are being collected, > what are the existing ways to process them? Most information is only available in the GCC sources. Oh, and of course most (if not all) low-hanging and beneficial speedup work has likely been done already. Don't expect your project to be easy. Richard.