When should I check "Parallelize Build" for an Xcode scheme?

15,460

We don't know the internals of the "Parallelize Build" setting, but we can deduct why the setting might not be beneficial sometimes.

First it's good to understand what "Parallelize Build" does. Source:

This option allows Xcode to speed up total build time by building targets that do not depend on each other at the same time. This is a time-saver on projects with many smaller dependencies that can easily be run in parallel.

When you have many targets that inter-depend on other targets this option can produce problems.

For example, imagine that one target is a framework, that your application target depends on. If you made modifications to the framework target, then there are cases where you MUST build the framework target BEFORE the application target. Parallelizing these won't work because for the application target and framework target to work nice together, they must be "in sync." We can't build the application target, without compiling the changes in the framework target first.

The above is a simple example, one that Xcode might handle nicely already, but some projects get very complex and without feeding proper information of your target-dependencies to Xcode, it might not be able to correctly parallelize your targets.

In summary, the setting is likely beneficial, and can reduce build speeds If you enable the setting and don't see any problems with the code being out-of-sync across targets. Otherwise, turn it off. As with all performance settings, make sure to test and measure whether you actually are seeing build speed increases.

Share:
15,460
meisel
Author by

meisel

Updated on July 12, 2022

Comments

  • meisel
    meisel almost 2 years

    I see that this option is unchecked in my current scheme and that a few places around the web recommend against it in certain cases. Can someone give a more thorough method of determining when this option can be checked for a scheme?