diff options
author | Mark Schaller <mschaller@google.com> | 2015-11-16 21:57:59 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-11-17 10:51:11 +0000 |
commit | b11c8880f254946fb5527821f162aa076599cb10 (patch) | |
tree | c1f07e84e27f658cf314889c7b62f3b7debf741d /src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java | |
parent | 4662a89901246d8354c0e6777fa59afe39a3199b (diff) |
Improve concurrency level in invalidation sets
--
MOS_MIGRATED_REVID=107974602
Diffstat (limited to 'src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java b/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java index 2a9072ec85..676b5374d4 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java +++ b/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java @@ -28,8 +28,10 @@ import com.google.devtools.build.lib.concurrent.QuiescingExecutor; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Pair; +import java.util.Collections; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.ForkJoinPool; @@ -188,7 +190,11 @@ public abstract class InvalidatingNodeVisitor<TGraph extends ThinNodeQueryableGr * interrupt comes in. */ static class InvalidationState { - private final Set<Pair<SkyKey, InvalidationType>> pendingValues = Sets.newConcurrentHashSet(); + + private final Set<Pair<SkyKey, InvalidationType>> pendingValues = + Collections.newSetFromMap( + new ConcurrentHashMap<Pair<SkyKey, InvalidationType>, Boolean>( + DEFAULT_THREAD_COUNT, .75f, DEFAULT_THREAD_COUNT)); private final InvalidationType defaultUpdateType; private InvalidationState(InvalidationType defaultUpdateType) { @@ -322,7 +328,10 @@ public abstract class InvalidatingNodeVisitor<TGraph extends ThinNodeQueryableGr */ static class DirtyingNodeVisitor extends InvalidatingNodeVisitor<ThinNodeQueryableGraph> { - private final Set<Pair<SkyKey, InvalidationType>> visited = Sets.newConcurrentHashSet(); + private final Set<Pair<SkyKey, InvalidationType>> visited = + Collections.newSetFromMap( + new ConcurrentHashMap<Pair<SkyKey, InvalidationType>, Boolean>( + DEFAULT_THREAD_COUNT, .75f, DEFAULT_THREAD_COUNT)); protected DirtyingNodeVisitor( ThinNodeQueryableGraph graph, |