First, let me start with: I know this is a silly question but please humor me.
I was chatting with some colleagues the other day while waiting for a build and this question came up:
If money would not matter, could we build a machine that would compile non trivial solutions in a near instant.
I guess we need some framework before we can answer the question:
- Compile a non trivial solution
- 1 solution
- 30 projects
- 700k ~ 1M LOC
- No Unit/Integration Tests
- .NET 4.5.2 or above (if it really matters?)
- Do so in a near instant timeframe
- Something between 0 and 1000ms.
- total compilation time (but I guess a second a project would be also very good)
- You can use anything software wise to speed up the process
- Has to be current hardware or hardware that will be available within the next 6 months
This is not a question about how to shorten build times! I am aware of plenty of methods to structure solutions and projects that can have a drastic impact on compilation time but with this question I want to know which hardware would allow me to ignore them.
I’m not sure if there is a difference in compile time between compiling something like a MVC web application or a “normal” executable. I guess there’s some overhead with additionally parsing JS,TS,SASS,LESS files but as far as I have seen on other projects it’s trivial in comparison.
I did some preliminary investigation but I could not really find an explanation ( in the Ernest Rutherford sense of explanation: An alleged scientific discovery has no merit unless it can be explained to a barmaid. ) of why compilation really takes so long beside “it’s complicated”.
On an i7-6700, Samsung PM871 540MB/s, 16GB 2133MHz RAM, I’m able to rebuild a similar solution to what is described above at 74 seconds. So I just need to shave 73 seconds off to be golden.
Thank you for joining this thought experiment 🙂