Hi Caleb, On Jun 27, 2013, at 8:13 PM, Caleb James DeLisle <[email protected]> wrote:
This is amusing:
http://dan.bodar.com/2012/02/28/crazy-fast-build-times-or-when-10-seconds-st...
I like this kind of thinking! For example one of the reasons I'm pushing for a new model is so that I can implement an in-memory version of the model interfaces so that we can run fast functional tests. To summarize my thinking and throw some ideas: * Throwing the baby with the bath water isn't usually a good solution ;) * I'd very much like to reduce our build times. I also believe it's very important * Should we speed up our build at the expense of throwing out a lot of quality checks we do? Definitely not. However we can move quality checks in a profile ("quality" profile) and execute those not all the time but a few timers per day only and on the CI. * Should we drop selenium tests? We do need functional tests and tests that can run in real browsers since we've seen from experience that YMMV depending on the browser. Now I do believe that a lot of our functional tests could be moved to integration tests that do not git a DB. This ties to the oldcore which is not written with testability in mind and it's hard to unit test it. Having an in-memory DB would help a lot though. However do need to keep some func tests. Is selenium the right tool? It's the best I know. * Another idea: personal builds with unbreakable build implementation. * Should we drop maven? I don't know any other build tool that comes close to it (a build is not just about compiling ;)) and I'm not willing to drop all the niceties we do in our build. BTW to speed up maven you have the maven shell: http://ericmiles.wordpress.com/2010/03/23/intro-to-maven-shell/ Now, all of this takes time to investigate.
Interesting stats:
cjdns - 40k LoC* - clean build in 40 seconds - 1k LoC/sec xwiki - 800k LoC* - clean build in 60 minutes(?) - 222 LoC/sec
This doesn't mean much without more details. Actually building xwiki with maven is probably a lot faster than building cjdns in a lot of cases simply because you don't need to rebuild everything with maven: Just build one module where you made a change, and provided you have retrieved its dependencies once before, it'll build in few second :) Raising awareness that we need to tackle the build speed is very good. I hate our current build speed. All ideas are welcome, volunteers to work on it are even more welcome ;) Thanks -Vincent
Cjdns build is still embarrassingly slow because cmake invokes the linker far more often than necessary.
* LoC is the total line count for every source file in the project.