Bill Hoffman wrote:
Christian Ehrlicher wrote:


*         We're using an NMake build tree, is NMake particularly
slow?  Do any of the other makes work more efficiently?
Be aware that nmake builds are much slower than using devenv, as nmake
starts a cl.exe process for every single file,
whereas devenv calls cl.exe with several source files. This costs, due
to the high process overhead on Windows.
I understand that.
It's not a nmake problem but a problem of cmake. cmake does not support batched build - already opened a bug long time ago because of this.



I am not sure how much faster a batch build would be. The real issue is the dual or more core machines. Even with a batch build and cl, it still only uses one processor, where devenv uses more. I use gmake and cl to get around this with -j N. However, gmake is slower than nmake because it uses the POSIX stat which is VERY slow on Windows. Someday I am going to hack gmake to use the Windows native calls to stat files. I almost think that would be time better spent than adding batch cl calls to CMake. I would like to see some bench marks on cl batch builds. It will not be trivial to implement and I don't think it would be worth the effort unless it has a big gain.
This is not scientific but I wrote a quick perl script to compile a simple library that we use (GCTPc). It consists of 70 C files with most of the files between 5K and 6K, a few are as large as 70K. The script just uses the time() function to grab the elapsed seconds and runs three tests. The first runs one cl.exe process with all 70 files with the '-c' flag to only compile. The second compiles each C file with it's own invocation of cl.exe. The last repeats the first, but with the new, experimental, '/MP' flag that does multiprocessor builds.

I get the following times for these files:
   all files      : 2 seconds
   single files : 7 seconds
   mp build   : 1 second

I repeated this test with a set of 15 C++ files that are larger with template code and that take significantly longer and I got the following times:
   all files      : 60 seconds
   single files : 78 seconds
   mp build   : 51 seconds

So, even on the single processor build the single invocation is almost 25% faster.


Take it all with a grain of salt.

Jason

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to