aboutsummaryrefslogtreecommitdiffhomepage
path: root/BUILD
diff options
context:
space:
mode:
authorGravatar Greg Estren <gregce@google.com>2016-12-14 19:46:48 +0000
committerGravatar John Cater <jcater@google.com>2016-12-14 20:18:29 +0000
commit86045da94fcee214576d858328787db307a4f4d3 (patch)
tree54a3a7e6702ed45174ff12185a077be8eb76b322 /BUILD
parent0bba4c910f774dedbf39d3f8cad32862be725a41 (diff)
Fix an analysis phase performance regression with dynamic configurations.
The short story is that env.valuesMissing() returns true without regard for which Skyframe evaluation missed values. In other words, given: env.getValues(missingValues); // Not all values ready. env.getValues(presentValues); // All value ready. if (env.valuesMissing()) { return null; } this returns null even if "env.getValues(presentValues)" has all its results. This doesn't have correctness consequences, but it does have (major) performance consequences, particularly in ConfiguredTargetFunction. The quick reason is that the successful call can still do useful followup work, but that gets short-circuited if the function nulls out early. See the code changes for full details. This eliminates a 30% hit on analysis time with dynamic configurations. With this change, that goes down to 0. The takeaway: ConfiguredTargetFunction is both unintuitively complex and performance-critical. C'est la vie. -- PiperOrigin-RevId: 142044069 MOS_MIGRATED_REVID=142044069
Diffstat (limited to 'BUILD')
0 files changed, 0 insertions, 0 deletions