From 42c2c729597eb7e8a87c62dce435781f47732d2c Mon Sep 17 00:00:00 2001 From: tomlu Date: Wed, 31 Jan 2018 11:18:20 -0800 Subject: Add memory-efficient map for storing nested set -> digest. Instead of using ConcurrentHashMap, we use a dead-simple open addressed hash hable with a giant byte array with 16-byte slots. We then read or write fingerprints straight into and out of the array, obviating the need to generate intermediate garbage. Locking mechanism is a read-write lock. This should be faster than full synchronisation for read-heavy loads. RELNOTES: None PiperOrigin-RevId: 184019301 --- src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD') diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD index 92e058bb1f..bb8fae4abf 100644 --- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD +++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/BUILD @@ -41,7 +41,10 @@ java_library( java_library( name = "fingerprint_cache", - srcs = ["NestedSetFingerprintCache.java"], + srcs = [ + "DigestMap.java", + "NestedSetFingerprintCache.java", + ], deps = [ ":nestedset", "//src/main/java/com/google/devtools/build/lib:commandline_item", -- cgit v1.2.3