diff options
author | 2016-05-13 18:51:27 +0000 | |
---|---|---|
committer | 2016-05-16 15:16:41 +0000 | |
commit | a56c1f4a1b47131b6d366a658f1f1e5abe0cdf3d (patch) | |
tree | 03b81997aaab9400106f7c2efacf69047425973d /src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java | |
parent | e255ce9efe565d83249f71a5ef85a8fc01ef7c10 (diff) |
Speed Optimizations:
* Adds threading to the AndroidDataWriter and AndroidDataSerializer.
* Changes to a BufferedWriter for the Writer (turns out it's faster for string writing.)
* Added buffers to the serializer reading.
--
MOS_MIGRATED_REVID=122280993
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java index 6730545908..3e13e61ad3 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java +++ b/src/tools/android/java/com/google/devtools/build/android/ParsedAndroidData.java @@ -40,6 +40,7 @@ import java.util.Objects; import java.util.Set; import javax.annotation.concurrent.Immutable; +import javax.annotation.concurrent.NotThreadSafe; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; @@ -53,6 +54,7 @@ import javax.xml.stream.XMLStreamException; @Immutable public class ParsedAndroidData { + @NotThreadSafe static class Builder { private final Map<DataKey, DataResource> overwritingResources; private final Map<DataKey, DataResource> combiningResources; @@ -98,6 +100,21 @@ public class ParsedAndroidData { ImmutableMap.copyOf(assets)); } + /** Copies the data to the targetBuilder from the current builder. */ + public void copyTo(Builder targetBuilder) { + KeyValueConsumers consumers = targetBuilder.consumers(); + for (Entry<DataKey, DataResource> entry : overwritingResources.entrySet()) { + consumers.overwritingConsumer.consume(entry.getKey(), entry.getValue()); + } + for (Entry<DataKey, DataResource> entry : combiningResources.entrySet()) { + consumers.combiningConsumer.consume(entry.getKey(), entry.getValue()); + } + for (Entry<DataKey, DataAsset> entry : assets.entrySet()) { + consumers.assetConsumer.consume(entry.getKey(), entry.getValue()); + } + targetBuilder.conflicts.addAll(conflicts); + } + ResourceFileVisitor resourceVisitor() { return new ResourceFileVisitor( new OverwritableConsumer<>(overwritingResources, conflicts), |