diff options
| author | Colin Cross <ccross@android.com> | 2019-02-21 14:58:58 -0800 |
|---|---|---|
| committer | Luca Stefani <luca.stefani.ge1@gmail.com> | 2019-03-01 11:58:32 +0100 |
| commit | ef83e2fb6b7f41da3615d585588ee1bf0bc8f2c7 (patch) | |
| tree | 3c35d54524d09ef4b71b784c2adc825f477ae854 | |
| parent | 1c272bea6f81eb5ee0a64df9581262262532ed71 (diff) | |
| download | build_soong-ef83e2fb6b7f41da3615d585588ee1bf0bc8f2c7.tar.gz build_soong-ef83e2fb6b7f41da3615d585588ee1bf0bc8f2c7.tar.bz2 build_soong-ef83e2fb6b7f41da3615d585588ee1bf0bc8f2c7.zip | |
Optimize CPU time when running d8, r8, dx and desugar
Pass -XX:+TieredCompilation -XX:TieredStopAtLevel=1 to the JVM to
reduce the time spent JITing, which in local experiments reduced
the CPU time of R8 while increasing the wall time, and reduced the
total number of runnable threads.
Without the new flags:
$ time out/soong/host/linux-x86/bin/r8-compat-proguard -injars out/target/common/obj/APPS/Dialer_intermediates/classes.jar ...
real 0m30.090s
user 4m35.337s
sys 0m12.853s
With the new flags:
$ time out/soong/host/linux-x86/bin/r8-compat-proguard -JXX:+TieredCompilation -JXX:TieredStopAtLevel=1 -injars out/target/common/obj/APPS/Dialer_intermediates/classes.jar ...
real 0m35.674s
user 2m45.135s
sys 0m9.531s
The increase in wall time should be offset by the better parallelism from
the reduced CPU time.
Bug: 119270658
Test: m checkbuild
Change-Id: I8fc78b5ef1f8c6f51fd97a29461b96ae2b35cada
| -rw-r--r-- | java/config/config.go | 1 | ||||
| -rw-r--r-- | java/config/makevars.go | 2 | ||||
| -rw-r--r-- | java/dex.go | 8 |
3 files changed, 7 insertions, 4 deletions
diff --git a/java/config/config.go b/java/config/config.go index 980db3b0..948b2854 100644 --- a/java/config/config.go +++ b/java/config/config.go @@ -49,6 +49,7 @@ func init() { pctx.StaticVariable("JavacHeapSize", "2048M") pctx.StaticVariable("JavacHeapFlags", "-J-Xmx${JavacHeapSize}") + pctx.StaticVariable("DexFlags", "-JXX:+TieredCompilation -JXX:TieredStopAtLevel=1") pctx.StaticVariable("CommonJdkFlags", strings.Join([]string{ `-Xmaxerrs 9999999`, diff --git a/java/config/makevars.go b/java/config/makevars.go index 27c7daaa..a5d7c5bb 100644 --- a/java/config/makevars.go +++ b/java/config/makevars.go @@ -79,4 +79,6 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("DEFAULT_JACOCO_EXCLUDE_FILTER", strings.Join(DefaultJacocoExcludeFilter, ",")) ctx.Strict("EXTRACT_JAR_PACKAGES", "${ExtractJarPackagesCmd}") + + ctx.Strict("DEX_FLAGS", "${DexFlags}") } diff --git a/java/dex.go b/java/dex.go index 642dee4a..97c64e3a 100644 --- a/java/dex.go +++ b/java/dex.go @@ -25,7 +25,7 @@ import ( var desugar = pctx.AndroidStaticRule("desugar", blueprint.RuleParams{ Command: `rm -rf $dumpDir && mkdir -p $dumpDir && ` + - `${config.JavaCmd} ` + + `${config.JavaCmd} ${config.DexFlags}` + `-Djdk.internal.lambda.dumpProxyClasses=$$(cd $dumpDir && pwd) ` + `$javaFlags ` + `-jar ${config.DesugarJar} $classpathFlags $desugarFlags ` + @@ -83,7 +83,7 @@ func (j *Module) desugar(ctx android.ModuleContext, flags javaBuilderFlags, var dx = pctx.AndroidStaticRule("dx", blueprint.RuleParams{ Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` + - `${config.DxCmd} --dex --output=$outDir $dxFlags $in && ` + + `${config.DxCmd} ${config.DexFlags} --dex --output=$outDir $dxFlags $in && ` + `${config.SoongZipCmd} -o $outDir/classes.dex.jar -C $outDir -D $outDir && ` + `${config.MergeZipsCmd} -D -stripFile "*.class" $out $outDir/classes.dex.jar $in`, CommandDeps: []string{ @@ -97,7 +97,7 @@ var dx = pctx.AndroidStaticRule("dx", var d8 = pctx.AndroidStaticRule("d8", blueprint.RuleParams{ Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` + - `${config.D8Cmd} --output $outDir $dxFlags $in && ` + + `${config.D8Cmd} ${config.DexFlags} --output $outDir $dxFlags $in && ` + `${config.SoongZipCmd} -o $outDir/classes.dex.jar -C $outDir -D $outDir && ` + `${config.MergeZipsCmd} -D -stripFile "*.class" $out $outDir/classes.dex.jar $in`, CommandDeps: []string{ @@ -111,7 +111,7 @@ var d8 = pctx.AndroidStaticRule("d8", var r8 = pctx.AndroidStaticRule("r8", blueprint.RuleParams{ Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` + - `${config.R8Cmd} -injars $in --output $outDir ` + + `${config.R8Cmd} ${config.DexFlags} -injars $in --output $outDir ` + `--force-proguard-compatibility ` + `-printmapping $outDict ` + `$dxFlags $r8Flags && ` + |
