By: Travis Downs (travis.downs.delete@this.gmail.com), August 12, 2019 10:26 am
Room: Moderated Discussions
aaron spink (aaronspink.delete@this.notearthlink.net) on August 12, 2019 9:45 am wrote:
> The
> only time someone should ever be doing a local build is if they are trapped on a desert island.
Are there "cloud" compile caching & distribution services out there?
I know this stuff works great on a 1 or 10 gbit LAN, but I am not sure that most people can download object files faster than they can compile them. So I think local compile has a place: and of course you can use caching there too (ccache changed my life).
As a random example I just clean compiled part of the project I am working on. With 4 threads it took just under 5 seconds (and 10 seconds CPU time, so I only got a 2x speedup from concurrency, probably due to linking).
It produced 4.1 MB of .o files and a 2 MB final executable.
Assuming I had to download all 6.1 MB, it would take me about 16 seconds on my 3 mbps connection (assuming the remote compilation/caching was infinitely fast). If I donwloaded only the finally executable, it would be just over 5 seconds, so competitive with local compile.
Compression would further improve the remote performance.
So it's definitely possible even on my slow connection, but it depends a lot on the output file size and local compile times. In practice I'm using ccache (disabled for this test), so local compile times are much faster.
> The
> only time someone should ever be doing a local build is if they are trapped on a desert island.
Are there "cloud" compile caching & distribution services out there?
I know this stuff works great on a 1 or 10 gbit LAN, but I am not sure that most people can download object files faster than they can compile them. So I think local compile has a place: and of course you can use caching there too (ccache changed my life).
As a random example I just clean compiled part of the project I am working on. With 4 threads it took just under 5 seconds (and 10 seconds CPU time, so I only got a 2x speedup from concurrency, probably due to linking).
It produced 4.1 MB of .o files and a 2 MB final executable.
Assuming I had to download all 6.1 MB, it would take me about 16 seconds on my 3 mbps connection (assuming the remote compilation/caching was infinitely fast). If I donwloaded only the finally executable, it would be just over 5 seconds, so competitive with local compile.
Compression would further improve the remote performance.
So it's definitely possible even on my slow connection, but it depends a lot on the output file size and local compile times. In practice I'm using ccache (disabled for this test), so local compile times are much faster.