Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the fastest C++ linker for Windows platform?

Apparently the speed of the C++ linker in Visual Studio 2010 hasn't improved that much (about 25% in our case). This means that we're still stuck with linking times between 30 seconds and two minutes. Surely there are linkers out there that perform better? Does anyone have experience with switching to another linker or even a complete tool set and seeing linking times go down drastically?

Cheers,

Sebastiaan

like image 923
Sebastiaan M Avatar asked Aug 19 '10 06:08

Sebastiaan M


People also ask

What is incremental linking?

Incremental linking links your exe/dll in a way which makes it easier for the linker to update the existing exe/dll when you make a small change and re-compile. So, incremental linking just makes it faster to compile and link your project.

What is an incremental linker file?

The Incremental Linker files (*. ilk) are used by the linker to speed up the generation of your app (.exe) or library (. lib). When your project has 100 files and only one changes, you'll be happy of this quicken.


2 Answers

You may well find a faster linker but, unless it's ten times as fast and I'm linking thirty times an hour, I think I'd prefer to use the tools that Microsoft has tested with.

I would rather have relatively slow link times than potentially unstable software.

And you kids are spoilt nowadays. In my day, we had to submit our 80-column cards to the computer centre and, if we were lucky, the operator would get it typed in by next Thursday and we could start debugging from the hardcopy output :-)

like image 83
paxdiablo Avatar answered Oct 31 '22 04:10

paxdiablo


When we checked the linker speed, we have identified the disk speed to be the most limiting factor. The amount of file traffic is huge, especially because of debugging info (just check the size of the pdb).

For us the solution was:

  • install insane amounts of RAM, so that a lot of file traffic can be cached (go for 4 GB, or even more, if you are on 64b OS). Note: you may need to change some system settings so that system is able to dedicate more memory for the cache
  • use very fast hard drive (connecting multiple of them as RAID may help even more)

We have also experimented with SSD, but the SSD we have tried had very slow write performance, therefore the net effect was negative. This might have changed meanwhile, especially with the best of SSDs.

As a first step I would suggest to launch Process Explorer (or even Task Manager will do) and check your CPU load and I/O traffic during the link phase, so that you can verify of you are CPU limited, or I/O limited.

like image 35
Suma Avatar answered Oct 31 '22 06:10

Suma