From 9b27b8a7580946e98eb590280ce132199553c14d Mon Sep 17 00:00:00 2001 From: leventov Date: Tue, 7 Oct 2014 00:56:03 +0400 Subject: [PATCH] Memoize hash computation in CopyingMetaBytesInterop --- .../map/serialization/CopyingMetaBytesInterop.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/openhft/chronicle/map/serialization/CopyingMetaBytesInterop.java b/src/main/java/net/openhft/chronicle/map/serialization/CopyingMetaBytesInterop.java index 1c1922a8f..a8fc3d368 100644 --- a/src/main/java/net/openhft/chronicle/map/serialization/CopyingMetaBytesInterop.java +++ b/src/main/java/net/openhft/chronicle/map/serialization/CopyingMetaBytesInterop.java @@ -34,6 +34,7 @@ public abstract class CopyingMetaBytesInterop implements MetaBytesInterop< final DirectBytesBuffer buffer; transient long size; + transient long hash; transient W writer; transient E cur; @@ -49,6 +50,7 @@ public abstract class CopyingMetaBytesInterop implements MetaBytesInterop< innerWrite(writer, buffer, e); buffer.flip(); size = buffer.remaining(); + hash = 0L; } } @@ -66,7 +68,10 @@ public abstract class CopyingMetaBytesInterop implements MetaBytesInterop< @Override public long hash(W writer, E e) { - return Hasher.hash(buffer.buffer); + long h; + if ((h = hash) == 0L) + return hash = Hasher.hash(buffer.buffer); + return h; } @Override