[cmake-developers] CMake master slowdown in generation step

Brad King brad.king at kitware.com
Tue Apr 8 14:42:33 EDT 2014


On 04/05/2014 07:08 AM, Stephen Kelly wrote:
> I agree of course that the performance is master currently is not 
> acceptable.
> 
> Re-cmake with v2.8.12.2:
>  $ time cmake ..
>  real    0m0.712s
>  user    0m0.692s
>  sys     0m0.020s
[snip]
> Re-cmake with optimize-source-file-processing:
>  $ time cmake ..
>  real    0m0.733s
>  user    0m0.689s
>  sys     0m0.046s 

Do you have timings for running CMake on KDE?

I've merged optimize-source-file-processing to master.  However,
generation is still significantly slower on some projects.  For
example, I ran CMake on VTK master as of commit ce692f85 (with
no options).  On a warm cache with CMake built in "Release" config
and using the default Unix Makefiles generator:

* Before the source file refactoring, CMake built from
  commit 1d4366ff (Merge topic 'revise-compiler-id-policies'):

  real    0m16.551s
  user    0m14.908s
  sys     0m1.192s

  real    0m16.171s
  user    0m14.676s
  sys     0m1.076s

* After the source file refactoring, CMake built from
  commit 5376151a (Merge topic 'target-transitive-sources'):

  real    0m58.518s
  user    0m52.632s
  sys     0m5.144s

  real    0m57.808s
  user    0m51.948s
  sys     0m5.288s

* After optimize-source-file-processing, CMake built from
  commit 7f7d6a40 (Merge topic 'optimize-source-file-processing'):

  real    0m40.353s
  user    0m34.556s
  sys     0m5.100s

  real    0m39.837s
  user    0m34.288s
  sys     0m4.956s

The "Configuring done" line prints after about 12 seconds.
Therefore generation is still at least 6x slower.

The "correct first, optimize later" strategy is reasonable
for new features, but in this case everyone pays the time
cost whether using the new features or not.  The "optimize
later" time has to be very soon, please.  I would like to
see the run time for the above case to be back down to 17s
or better.

We like to maintain an invariant that 'master' is always
release-ready.  The current performance is not acceptable,
so 'master' is not currently release-ready.  I plan to merge
no more features to 'master' until this is resolved.  If it
is not resolved soon, I will revert the changes from 'master'
to make it release-ready again.  Then the target SOURCES
features can be restored after implementing with acceptable
performance.

Thanks,
-Brad



More information about the cmake-developers mailing list