[CMake] slow CMake performance configuring builds on remote SMB servers

Philip Lowman philip at yhbt.com
Fri Mar 23 15:16:36 EST 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bill Hoffman wrote:
> Philip Lowman wrote:
>> Does CMake do anything weird during it's configuration phase like write
>> out temporary files?  Laying aside the initial compile checks which may
>> be occuring on the network drive (but if so, could be optimized to occur
>> in temp space on the C: ) what other file writes does CMake do prior to
>> generating the Makefiles?
>>   
> Most files cmake writes out are copy if different.  So, cmake writes a
> file, then diff's it with the
> file that was already there, and if they are different it gets rid of
> the original and moves the new
> file into place.   This is to avoid too many reloads and other side
> effects of changing all the
> files all the time.   It would be a lot of work, but I suppose you might
> be able to build the whole
> tree in some staging area, then move it later.   But, that sounds very
> difficult.   It may just be
> that running cmake over network drives on windows is slow....

Hmm.. so CMake writes out a temporary file and then diffs it against the
existing file using the operating system and only moves it back into
place if it's out-of-date?

If I understand this correctly there's a simple optimization that could
be used which might dramatically improve performance.  Simply do the
diffing within CMake between the "new" file (in memory) and the "old"
file (already in memory because it's been read in).  Then only write the
file out if it's changed.

- --
Philip Lowman
Simulation Development Engineer, Modeling and Simulation Technology
General Dynamics Land Systems
http://www.gdls.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGBDWke0tOktX6RKkRAvTWAJ9p90xLdXofMEK5xPqXzHmasbLZwQCgjhCD
lFyslFPAAQMwRZjnNrRxrQI=
=3/xg
-----END PGP SIGNATURE-----


More information about the CMake mailing list