Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Added

Section


Table of Content Zone
locationtop


Column

In certain cases, it may be possible to further optimize build speeds of MS Visual Studio projects by fine-tuning certain aspects of either IncrediBuild's configuration or the project's settings. This section lists common causes for not obtaining optimal results using IncrediBuild.

Different environments and projects respond differently to configuration changes, so the best way to go is to play around with the different configurations yourself and see what works best for your build.

For additional important performance-related tips see this section.

Using the "IncrediBuild_AllowOverlap" Directive

The IncrediBuild_AllowOverlap directive may speed up builds in cases where dependencies between projects are defined in a solution/workspace, and project-level custom build steps or build events (post-build, pre-link, etc.) are used in these projects.
Take the following case: Project B is a sub-project of project A, and contains a project-level custom build step, a pre-link step, or a post-build step. Consequently, project A will not start to compile until project B's step has been performed. While this ensures that projects are successfully built as long as dependencies have correctly been defined, it may also unjustifiably slow down the build if project B's step is not required by project A's source files. In this case, using the IncrediBuild_AllowOverlap directive will instruct IncrediBuild not to postpone project A's compilation.

Using the IncrediBuild_AllowOverlap directive is explained in full detail in this section under Method 1.


Note:

  • This feature is relevant only for VS 2008 and earlier.

The IncrediLink option can speed up incremental links from minutes to a few seconds. 


Distributing Custom Build Steps, Custom Build Rules, and Build Events

If custom build steps, files running custom build rules, or build events (pre-build, pre-link, and post-build) take up a large portion of your build time, it may be a good idea to consider using the optional IncrediBuild Interfaces extension package to distribute execution of these steps, in addition to compilation and MIDL steps. For more information on how to distribute these steps, see this section.


Optimizing Project Settings

The following suggestions for changes in the project settings can help improve build times, specifically when using IncrediBuild:

  • Disabling Browse Information – Creation of browse information lengthens each file's compilation time, adds additional network strain, and adds an extra step at the end of each build for the creation of the .BSC file. If you typically don't use this feature of the IDE, either disable browse information creation or simply set IncrediBuild's Browse Information Creation option (Generate .BSC (Source Browser database) file) to 'Never' in the Agent Settings dialog under Visual Studio Builds. 
  • Disabling incremental compilation and minimal rebuild (the /Gi and /Gm compiler flags) – Disable these two options to gain slightly better performance with IncrediBuild.


Limiting the number of PDB files

Note:

  • This feature is relevant for VS 2012 and later, and in situations in VS 2008 and VS 2010, where Support, as a solution to a user's problem, advises to set the PdbForwardingMode flag in the registry to 0.

To achieve its distribution, IncrediBuild creates a separate PDB file for each Agent running at any given time. This means that, unlike standard MSVC builds, multiple PDB files are created in intermediate folders, which can potentially slow down the link phase. The Agent Settings dialog  Visual Studio Builds page allows you to limit the number of PDB files that are created in each project's intermediate folder. While this may speed up linking, it also means that you are limiting the number of Agents allowed to concurrently compile files from the same project. Therefore, it is generally advised to use this option only if your builds typically include files from a relatively large number of projects.


Optimizing Project Build Order

Note:

  • This feature is relevant only for VS 2008 and earlier.

If necessary, you can specify Project build priorities through the VS Solutions, to control the order that IncrediBuild builds projects.


Allowing Custom Build Steps to Run in Parallel

Note:

  • This feature is relevant only for VS 2008 and earlier.

Another possible optimization is to allow custom build steps to be run simultaneously, on more than one CPU/core, in the local machine. This option is disabled by default, and can be enabled using the Agent Settings dialog Visual Studio Builds page


Preventing Link Steps from Running in Parallel on the Local Machine

Allowing link steps to run in parallel on the initiating machine (assuming it has multiple cores/CPUs and has the "Multiple CPUs/Cores" extension package assigned) may sometimes result in an improvement in build performance. However, if your link steps typically consume a lot of memory and your machine does not have sufficient physical memory to support multiple link steps, this might slow down builds as a result of excessive page file swapping. It is possible to configure parallelization of link steps using the Agent Settings dialog Visual Studio Builds page.




Column

Visual Studio Reference:

Child pages (Children Display)
styleh4
pageVisual Studio Reference

IncrediBuild Solutions:

Child pages (Children Display)
styleh4
pageIncrediBuild Solutions

User Manual:

Child pages (Children Display)
styleh4
pageIncrediBuild Windows User Manual


...