[cmake-developers] CMake 3.5 generation time

Brad King brad.king at kitware.com
Fri Feb 5 10:16:58 EST 2016


On 02/05/2016 09:10 AM, Bartosz Kosiorek wrote:
> Finally I was able to finalize git bisect.
> Generally without regression time was: real3m44.070s
> first bad commit: [0c97d32f7a592a768d614c19b3fd48eab245a2c4] cmGlobalGenerator: Remove direct storage of target
> time increased to real    6m36.929s (second clean run real    6m12.635s)
> https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0c97d32f
> 
> In our project we have exactly 3287 targets, because we have
> flavored builds (in many cases one source code is build in
> three variants, depending on map type)

Thanks.  That commit was part of a larger refactoring topic:

 Merge topic 'use-generator-target'
 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1e8c920d

and so cannot be simply reverted without a lot of other changes.

It looks like these methods:

 cmGlobalGenerator::FindTargetImpl
 cmGlobalGenerator::FindGeneratorTargetImpl
 cmGlobalGenerator::FindImportedTargetImpl

are all now using linear searches instead of algorithmically
efficient data structures like before.  These lookups are done
a lot.

Steve, IIUC you made this change as part of refactoring to
separate configure-time and generate-time structures.  We need
to fix this to make the lookups efficient again.  Where should
we store the needed data structures now?

Thanks,
-Brad


More information about the cmake-developers mailing list