From 21eed11452f5f5c5335ead0917421efef30a7678 Mon Sep 17 00:00:00 2001 From: Vladislav Rassokhin Date: Tue, 18 Feb 2020 17:49:07 +0300 Subject: [PATCH] JPS: don't count dummy targets when adjusting build time for targets GitOrigin-RevId: 0ae5c9d4cf93c92521964d9ceb7fa43b24bc3a0f --- .../jetbrains/jps/incremental/messages/BuildProgress.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/messages/BuildProgress.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/messages/BuildProgress.java index e330dffe184d..d3e58c3c7b42 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/messages/BuildProgress.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/messages/BuildProgress.java @@ -1,7 +1,8 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.jps.incremental.messages; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.util.containers.ContainerUtil; import gnu.trove.TObjectIntHashMap; import gnu.trove.TObjectLongHashMap; import org.jetbrains.jps.builders.BuildTarget; @@ -57,7 +58,7 @@ public class BuildProgress { for (BuildTargetChunk chunk : allChunks) { boolean affected = isAffected.test(chunk); for (BuildTarget target : chunk.getTargets()) { - if (!targetIndex.isDummy(target)) { + if (!myTargetIndex.isDummy(target)) { if (affected) { increment(totalAffectedTargets, target.getTargetType()); targetTypes.add(target.getTargetType()); @@ -123,6 +124,7 @@ public class BuildProgress { public synchronized void onTargetChunkFinished(BuildTargetChunk chunk, CompileContext context) { boolean successful = !Utils.errorsDetected(context) && !context.getCancelStatus().isCanceled(); + int nonDummyTargetsCount = ContainerUtil.count(chunk.getTargets(), it -> !myTargetIndex.isDummy(it)); for (BuildTarget target : chunk.getTargets()) { myCurrentProgress.remove(target); if (!myTargetIndex.isDummy(target)) { @@ -134,7 +136,7 @@ public class BuildProgress { myAbsoluteBuildTime += elapsedTime; if (successful && FSOperations.isMarkedDirty(context, target)) { - long buildTime = elapsedTime / chunk.getTargets().size(); + long buildTime = elapsedTime / nonDummyTargetsCount; if (!myTotalBuildTimeForFullyRebuiltTargets.adjustValue(targetType, buildTime)) { myTotalBuildTimeForFullyRebuiltTargets.put(targetType, buildTime); }