The build system enhancements I proprosed some time ago is finished now.

Here are some pragmatic (quite unrepresentative/inaccurate, due cpufreq
and loaded machines) benchmarks:

Setup:
I disable ccache for all of this benchmarks, distcc is used as noted.
The compiler commandlines still always use the 'ccache distcc' prefix.
The tests are run on my laptop (slow encrypted disk) and all other hosts
are connected via WLan.

CC=ccache distcc g++-4.1
CXX=ccache distcc g++-4.1
CCACHE_DISABLE=true
$ rm * -rf
$ ../configure --program-suffix=_flatam --with-external-ffmpeg

1. old build system using SUBDIRS
1.1. using distcc over all machines here
DISTCC_HOSTS="10.20.20.20/2,lzo 10.20.60.10/3,lzo 10.20.10.40/1,lzo \
 10.20.50.10/2,lzo"

Note: my laptop is already loaded with preprocessing and feeding the
cluster, there is no compilation on localhost.

1.1.1 full rebuild
$ time make -j 9
...
real    6m12.913s
user    1m40.237s
sys     0m32.071s

1.1.2. rebuild with few files in cinelerra touched
$ touch ../cinelerra/cache.*
$ time make -j 9
...
real    1m11.398s
user    0m29.755s
sys     0m6.763s

1.1.3. rebuild with a plugin touched
$ touch ../plugins/blur/blur.*
$ time make -j 9
...
real    0m8.623s
user    0m5.966s
sys     0m0.553s

1.2. build sequential no distcc hosts
DISTCC_HOSTS=localhost/1

1.2.1 full rebuild
$ time make
....
real    9m11.694s
user    7m33.710s
sys     0m38.491s


1.2.2. rebuild with few files in cinelerra touched
$ touch ../cinelerra/cache.*
$ time make
...
real    3m7.865s
user    2m39.326s
sys     0m9.649s

1.2.3. rebuild with a plugin touched
$ touch ../plugins/blur/blur.*
$ time make
...
real    0m9.239s
user    0m7.829s
sys     0m0.587s

2. the new build system using included makefiles
2.1. using distcc over all machines here
2.1.1 full rebuild
$ time make -j 9
....
real    3m13.020s
user    1m38.214s
sys     0m31.068s

2.1.2. rebuild with few files in cinelerra touched
$ touch ../cinelerra/cache.*
$ time make -j 9
...
real    1m9.546s
user    0m30.031s
sys     0m6.270s

2.1.3. rebuild with a plugin touched
$ touch ../plugins/blur/blur.*
$ time make -j 9
...
real    0m8.748s
user    0m6.326s
sys     0m0.317s

2.2. build sequential no distcc hosts
DISTCC_HOSTS=localhost/1

2.2.1 full rebuild
$ time make
....
real    9m3.112s
user    7m39.167s
sys     0m37.714s

2.2.2. rebuild with few files in cinelerra touched
$ touch ../cinelerra/cache.*
$ time make
...
real    3m10.850s
user    2m44.649s
sys     0m9.513s

2.2.3. rebuild with a plugin touched
$ touch ../plugins/blur/blur.*
$ time make
...
real    0m9.255s
user    0m8.629s
sys     0m0.323s



Conclusions:
 * parallel builds are double as fast (mostly because plugins build
   parallel now)
 * rebuilds are not that improved like I hoped (maybe I touched the
   wrong files) :(
 * building on single processor is not improved (that wasn't expected
   anyway)
 * distcc rocks, but doesn't scale that well maybe perhaps of my wlan or
   due the slow HD in my laptop.
 * enableing ccache would give another speed boost but isn't useful for
   this comparsions.
 * Not measured here, but configure is faster since far less Makefiles
   are generated.
 * So far this is just a minimal translation, there is still room for
   improvement.


Whats next:
Some of the issues I mentioned earlier are not yet fixed
 * I only did *works-for-me* efforts so far, that is:
  + buildinfo will be unconditionally recreated
  + works only --with-external-ffmpeg (I didnt decided yet if to
    keep SUBDIRS for ffmpeg or also to turn it into a include)
  + some (clean..:) targets are commented out

All or some of this work could be merged back into the SVN. There are
some fixes and changes to the sources too (garbled dependencies, path
fixes, libaffine factored out, ...), please review it! I'll prepare a
patch including what we want in SVN on request when we concluded what
shall go in there.


        Christian

_______________________________________________
Cinelerra mailing list
Cinelerra@skolelinux.no
https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra

Reply via email to