Visual C++ supports incremental compilation and linking.
https://blogs.msdn.microsoft.com/vcblog/2018/03/14/build-tim...
https://blogs.msdn.microsoft.com/vcblog/2014/11/12/speeding-...
https://blogs.msdn.microsoft.com/vcblog/2018/01/04/visual-st...
https://blogs.msdn.microsoft.com/vcblog/2016/10/05/faster-c-...
- Read in objects file and parse linking information (needed symbols etc)
- Do some in-memory calculations - resolving symbols and some other stuff. Simple graph theory. Is there any need for more than O(n log n) runtime?.
- Write out object files
I don't think anything should take so long. No caching needed. I read the series on linkers by gold's author, where significant speedups were claimed. And also, that object-oriented C++ was the right approach to software architecture. I strongly disagree with that second point and didn't understand too much from the article series to be honest. So I am not surprised at all that there are today even much faster linkers.
I am wondering if linking could be sped up. I feel like a lot of the steps mentioned here could be cached for instance.