Thoughts on compile times

  • February 2, 2004
  • Benedikt

First of all, heres the oblique printf(“Hello world”).

Now, while we are all trying hard to make XFce a fast application suite – and in the not so far future maybe a development plattform as well – nobody seems to care about compile times. Today I had to update my system due to a bug in the POSIX thread wrapper. Because of updated libpthread I had to recompile glib/atk/gtk etc. and finally recompile all of xfce from the beginning. I noticed that it takes quite some time to compile everything (on modern hardware, except for the slow IDE disk drives, but thats another story). Nevertheless it left me wondering why XFce takes so long to compile (I usually only recompile only the necessary stuff, most of the time only the stuff I’m currently working on, so I haven’t recognized so far), since we have only few files compared to say KDE or Gnome. Being a C++ programmer in real life I know how to optimize C++ compile times: Include only whats necessary and keep your interface files small! Besides producing good designs (application design, not GUI design) and writing working code, this is one of the most important rules in midsize to large C++ projects, because it saves you and your testing crew hours of recompiling and makes interface errors easier to locate (esp. when you make heavy use of templates).

Now, looking at XFce code, it seems we have all started with the same stupid Gtk+ tutorial :-), cause we all simple include gtk/gtk.h, glib.h, etc. which imports the whole Gtk+/Glib/etc. interface descriptions into each of our source files, that says, the compiler has to parse all of the Gtk+/Glib/etc. interface code, which means increased compile times (today lexer/parser is at around O(n^3) plus preprocessor plus symbol tables plus …). In addition to increased compile times, we get additional sources of errors. I remember gcc reporting an error about something totally stupid in gtkcurve.h, which is part of the Gtk+ interface, but gtkcurve.h was ok. The error was caused by a typo I had in one of my preprocessor macro names that led to an invalid substitution in gtkcurve.h.

So, to conclude, maybe we could make use of pratical techniques to optimize the compile times in XFce.

The next step then, would be to make configure run faster, but thats really a story of its own, if possible :-)

New personal website

  • February 1, 2004
  • Jasper Huijsmans

So, I moved over my personal XFce site:


Yeah, it’s our own domain, with proper hosting (php, mysql, reasonable disk space).

News items and new screenshots will be posted there, as well as some dowloads.

Hmm, news should be put up here as well … Ah well, we’ll see.


  • February 1, 2004
  • Moritz


now that we have a new member in the crew named kelnos Xfdesktop is improving daily. If you’re a straight followner of the discussions on the list you might even have his latest patch which finally brings icons to XFce’s desktop (Not that we need it ;-). Other things like different backgrounds for different workspaces and CDE’ish application icons are planned. For now kelnos’ primary goal is to get the desktop menu integration into his current code. Well well .. good luck! I can’t wait to see those CDE application icons ;-)

Apart from that this new blog rocks .. and so does it’s creator Francois. Did he actually tell you that we’re (or better: He) playing with animations for the XFce website to illustrate the way certain parts of XFce work? Its gonna be in flash .. and I can tell ya .. its so awesome.

Right, enough for this first test ..