Chromium now builds with VS 2015* so I ran some tests over the weekend to see if the build-time improvements that I'd heard about had showed up. The answer is slightly complicated. I did spot tests of linking-speed for base_unittests.exe, chrome_child.dll, and unit_tests.exe. I also tested buildtype=Official linking speed (LTCG**) with base_unittests.exe and chrome_child.dll. Finally, I tested full build times (compilation and linking) of the 'chrome' target.The summary is that some scenarios are slightly slower and some scenarios are significantly faster. Changing a few build settings may let us squeeze out more improvements on incremental builds.
- Linking speed: VS 2015 takes about 8% less time to link. However it uses 2.5-19.7% more CPU time, so on a busy machine it may end up being slower. Linking also typically uses ~20% more memory*** which can lead to severe build-time and machine-responsiveness issues.
- Linking speed with /debug:fastlink****: once I got this working (CL will land soon) linking took 40-60% less time than on VS 2013, and 45-85% less memory than VS 2013! This should help significantly with local builds. The generated code is identical, but the PDBs generated are much smaller (but machine-local).
--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
The Visual C++ linker for non LTCG builds spends majority of its time in generating program database file (PDB). Merging of type information, fixing up private symbol's type indexes, and generating global symbols are major time components in PDB generation. With /DEBUG:FASTLINK the linker produced PDB doesn't have any private symbol, and debug information is distributed among input object and library files and the linker generated PDB just serves as an indexing database. DIA APIs have been modified to provide a seamless experience for debugging (only), and using this option provides much faster link times with little or no impact to overall debugging experience. To illustrate this further, notice the drop in full link times with the /DEBUG:FASTLINK switch thrown for a couple of benchmarks we have here in our labs.
I suspect that breakpad dumpsyms (and thus, crash analysis) would have a really bad time with this.Will
Oh. Yeah OK that makes sense :)
With this change, would we need to update tools\win\copy-installer.bat to copy all the obj files across if debugging is to work in a VM?Will
The /debug:fastlink CL landed yesterday -- see https://codereview.chromium.org/1254723012. It requires VS 2015 which is still bleeding edge, so caveat codor.Instructions are in the CL but it's basically GYP_DEFINES=win_fastlink=1. For gn builds it's is_win_fastlink = true but I'm not sure that gn builds work with VS 2015.Sharing a folder from your host to your guest should work if the drive letters are the same. Or maybe the paths are relative -- I don't know. I think that if you need to debug on a VM you shouldn't use /debug:fastlink.
--