diff options
author | 2016-07-26 14:29:48 +0000 | |
---|---|---|
committer | 2016-07-27 11:14:04 +0000 | |
commit | 2745f0bafd7d549688480cdee3f021de489c719e (patch) | |
tree | 4bc375688e5af969414b1bc3633dec47e8b1f9d0 /src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java | |
parent | 3cf21261bf756c937551c7d852dbca5c954fc44f (diff) |
Improve resource DataKey serialization perf a bit
Address the TODO about using toString in the
TreeMap comparator by using DataKey#compareTo.
Also, use the entrySet to iterate K-V pairs
instead of calling get(key).
Synthetic benchmark w/ 10000 random keys:
Before: 260ms to serialize
After: 33ms to serialize
Less of a difference when there are few keys.
--
MOS_MIGRATED_REVID=128469407
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java')
-rw-r--r-- | src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java b/src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java index b6f595db4e..9940d13d27 100644 --- a/src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java +++ b/src/tools/android/java/com/google/devtools/build/android/RelativeAssetPath.java @@ -16,7 +16,6 @@ package com.google.devtools.build.android; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.devtools.build.android.proto.SerializeFormat; - import java.io.IOException; import java.io.OutputStream; import java.nio.file.FileSystem; @@ -32,7 +31,7 @@ import java.util.Objects; * * Note: Assets have no qualifiers or packages. */ -public class RelativeAssetPath implements DataKey, Comparable<RelativeAssetPath> { +public class RelativeAssetPath implements DataKey { /** * A Factory that creates RelativeAssetsPath objects whose paths are relative to a given path. */ @@ -103,8 +102,17 @@ public class RelativeAssetPath implements DataKey, Comparable<RelativeAssetPath> } @Override - public int compareTo(RelativeAssetPath relativeAssetPath) { - return this.relativeAssetPath.compareTo(relativeAssetPath.relativeAssetPath); + public int compareTo(DataKey otherKey) { + if (!(otherKey instanceof RelativeAssetPath)) { + return getKeyType().compareTo(otherKey.getKeyType()); + } + RelativeAssetPath otherAssetPath = (RelativeAssetPath) otherKey; + return this.relativeAssetPath.compareTo(otherAssetPath.relativeAssetPath); + } + + @Override + public KeyType getKeyType() { + return KeyType.ASSET_PATH; } @Override |