make FBUtilities.hash more efficient patch by Dave Brosius; reviewed by jbellis for CASSANDRA-3869
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/96afdba8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/96afdba8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/96afdba8 Branch: refs/heads/trunk Commit: 96afdba855f94bce44f5747121e6019529dc8c07 Parents: ba637b4 Author: Jonathan Ellis <[email protected]> Authored: Wed Feb 8 21:46:00 2012 -0600 Committer: Jonathan Ellis <[email protected]> Committed: Wed Feb 8 21:46:00 2012 -0600 ---------------------------------------------------------------------- .../org/apache/cassandra/utils/FBUtilities.java | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/96afdba8/src/java/org/apache/cassandra/utils/FBUtilities.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java index 6bed524..7736d4c 100644 --- a/src/java/org/apache/cassandra/utils/FBUtilities.java +++ b/src/java/org/apache/cassandra/utils/FBUtilities.java @@ -216,9 +216,12 @@ public class FBUtilities public static byte[] hash(ByteBuffer... data) { MessageDigest messageDigest = localMD5Digest.get(); - for(ByteBuffer block : data) + for (ByteBuffer block : data) { - messageDigest.update(block.duplicate()); + if (block.hasArray()) + messageDigest.update(block.array(), block.position(), block.remaining()); + else + messageDigest.update(block.duplicate()); } return messageDigest.digest();
