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) {