You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2014/02/12 11:37:46 UTC

svn commit: r1567592 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/AbstractBlob.java

Author: jukka
Date: Wed Feb 12 10:37:46 2014
New Revision: 1567592

URL: http://svn.apache.org/r1567592
Log:
OAK-1392: SegmentBlob.equals() optimization

Check blob lengths in AbstractBlob.equal() before comparing the actual bytes.
Based on patch by Alex Parvulescu.

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/AbstractBlob.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/AbstractBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/AbstractBlob.java?rev=1567592&r1=1567591&r2=1567592&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/AbstractBlob.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/AbstractBlob.java Wed Feb 12 10:37:46 2014
@@ -47,6 +47,13 @@ public abstract class AbstractBlob imple
     }
 
     public static boolean equal(Blob a, Blob b) {
+        // shortcut: first compare lengths if known in advance
+        long al = a.length();
+        long bl = b.length();
+        if (al != -1 && bl != -1 && al != bl) {
+            return false; // blobs not equal, given known and non-equal lengths
+        }
+
         try {
             return ByteStreams.equal(supplier(a), supplier(b));
         } catch (IOException e) {