[Development] Build Hotspots in the Qt build process

Shane McIntosh mcintosh at cs.queensu.ca
Thu Feb 6 18:37:43 CET 2014


Hi Thiago,

On Feb 5, 2014, at 6:18 PM, Thiago Macieira <thiago.macieira at intel.com> wrote:

> Em qua 05 fev 2014, às 11:58:50, Simon Hausmann escreveu:
> 
> I'm with Simon, this is very interesting stuff!

Thank you! :-)

> I'm wondering if we could make use of your data to figure out what headers we 
> should precompile.

This is a fascinating idea actually. We primarily motivate our work based on refactoring, but as you mentioned, some really hot files just cannot be refactored due to architectural concerns. Perhaps precompiling the hot headers is another way these hotspots can be addressed.

> You said you extract a graph from the build: is there a way 
> to parse that graph to produce a list of headers most commonly included in a 
> given module?

Yes, this should be possible. Within our graph, each header file is a node that is connected by an edge to each object file (another node) that needs to be recompiled when the header changes. A simple measure like the sum of all the edges coming out of a header file will tell you how many objects are recompiled when it changes, which is a kind of proxy for the number of files including a header.

> We've had precompilation support in qmake for a decade, but apparently we use 
> that in exactly 3 modules...

Hmm, it could also be interesting to look into these modules to see if having them precompiled is justified by its hotness?

Kind regards,
-Shane


More information about the Development mailing list