Why isn’t anyone talking about parallel compilation for .Net

compilermsbuildnet

Builds are slow and take time. We can get MSBuild to parallelize them, but only on a single machine, not across a cluster. Why hasn't anyone come up with clustered build solutions in the .Net space? I know such solutions exist in the C++ space (e.g., IncrediBuild, Electric Cloud, etc.) but we .Net developers are forced to build huge solutions on individual machines. Anyone know if there's some unsolvable technical difficulty in this?

Just curious.

Best Answer

" Why hasn't anyone come up with clustered build solutions in the .Net space?"

If compilation were to be clustered:

  1. The compiler will have to first break the compilation into different threads which can be done on indepenent machines.
  2. Send the code to different machines for compliation.
  3. Wait till all machines have completed their task
  4. Get the results from all machines in the cluster together.
  5. Put together the results and link them up.

steps 1 and 5 are dependant on the nature of the project : Too many interdepencies and the number of distribuable tasks is drastically reduced. Step 2 and 4 depend on the status of your network. The time taken to send and recive the object files adds to the compile time and beats the benefit of clustering. Depending on the project you probably may end up with the same time for compiling on a single machine as you would for a cluster.

Related Topic