From 6fc9fa05e5148c0996823dbaf8a6813d43c15c48 Mon Sep 17 00:00:00 2001 From: Nathan Harmata Date: Fri, 27 Mar 2015 17:48:57 +0000 Subject: Introduce QueryableGraph#getBatch, a batched variant of QueryableGraph#get and use it in the underlying implementation of SkyFunction.Environment#getValues. It's reasonable for an alternative graph implementation to have a more efficient implementation of getBatch than the naive serial implementation. -- MOS_MIGRATED_REVID=89708027 --- .../com/google/devtools/build/skyframe/InMemoryGraph.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java') diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java index 28ba49a7ea..4f617b1c6f 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java +++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java @@ -17,11 +17,13 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.base.Predicates; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.MapMaker; import com.google.common.collect.Maps; import java.util.Collections; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentMap; import javax.annotation.Nullable; @@ -56,6 +58,18 @@ public class InMemoryGraph implements ProcessableGraph { return nodeMap.get(skyKey); } + @Override + public Map getBatch(Set keys) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + for (SkyKey key : keys) { + NodeEntry entry = get(key); + if (entry != null) { + builder.put(key, entry); + } + } + return builder.build(); + } + @Override public NodeEntry createIfAbsent(SkyKey key) { NodeEntry newval = keepEdges ? new InMemoryNodeEntry() : new EdgelessInMemoryNodeEntry(); -- cgit v1.2.3