KBEA-00131 - Using the dependency optimization feature

This KB article is applicable to ElectricAccelerator v7.0 and later.

Overview

ElectricAccelerator includes a dependency optimization feature to improve performance. By learning which dependencies are actually needed for a build, Accelerator can use that information to improve performance in subsequent builds.

When dependency optimization is enabled, emake maintains a dependency information file for each makefile. If a build's dependencies have not changed from its previous build, emake can use that stored dependency information file for subsequent builds.

Enabling dependency optimization

You must first run a "learning" build with the dependency optimization feature enabled. To enable dependency optimization, set the following: --emake-optimize-deps=1

For the learning build, (because there is no stored dependency information file for that specific makefile), the argument only saves a new result. For subsequent builds, the argument enables the reuse of stored dependency information and saves a new file as appropriate. If you do not specify --emake-optimize-deps=1, then dependency information is not saved or accessed.

Note: It is recommended that you turn on --emake-autodepend=1 to ensure accurate incremental builds.

The following table describes dependency optimization-related options.

eMake Option Description
--emake-assetdir=<path> Use the specified directory for assets such as saved dependency information. The default directory is .emake. This option also affects parse avoidance.
--emake-optimize-deps=<0/1> Use the saved dependency information file for a makefile when dependencies are the same and save new dependency information when appropriate.
Dependency optimization file location and naming

Dependency information files are saved in the working directory where emake was invoked under <assetdir>/deps. (The default asset directory is .emake.)

The file is named from the md5 hash of the root-relative path of the "main" makefile for the make instance that the dependency information file belongs to.

Examples

  • If your emake root is /tmp/src, and your makefile is /tmp/src/Makefile, then the dependency information file is named after the md5 hash of the string "Makefile".
  • If your root is /tmp/src and your makefile is /tmp/src/foo/Makefile, the file is named after the md5 hash of the string "foo/Makefile".
Limitations
  • Dependency optimization is not supported when using NMAKE (or Visual Studio/devenv) emulation.

Applies to

  • Product versions: 7.0 and later
Have more questions? Submit a request

Comments

Powered by Zendesk