Author: jukka
Date: Tue Dec 17 16:48:07 2013
New Revision: 1551618
URL: http://svn.apache.org/r1551618
Log:
OAK-1273: Reduce overhead when handling many parallel property indices
Avoid an extra level of MapRecord.compare() stack frames
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MapRecord.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MapRecord.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MapRecord.java?rev=1551618&r1=1551617&r2=1551618&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MapRecord.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/MapRecord.java
Tue Dec 17 16:48:07 2013
@@ -363,38 +363,11 @@ class MapRecord extends Record {
boolean entryDeleted(MapEntry before);
}
- boolean compare(MapRecord base, MapDiff diff) {
- return compare(base, this, diff);
- }
-
- //------------------------------------------------------------< Object >--
-
- @Override
- public String toString() {
- StringBuilder builder = null;
- for (MapEntry entry : getEntries()) {
- if (builder == null) {
- builder = new StringBuilder("{ ");
- } else {
- builder.append(", ");
- }
- builder.append(entry);
- }
- if (builder == null) {
- return "{}";
- } else {
- builder.append(" }");
- return builder.toString();
- }
- }
-
- //-----------------------------------------------------------< private >--
-
- private static boolean compare(
- MapRecord before, MapRecord after, MapDiff diff) {
+ boolean compare(MapRecord before, MapDiff diff) {
Segment beforeSegment = before.getSegment();
int beforeHead = beforeSegment.readInt(before.getOffset(0));
+ MapRecord after = this;
Segment afterSegment = after.getSegment();
int afterHead = afterSegment.readInt(after.getOffset(0));
@@ -472,6 +445,29 @@ class MapRecord extends Record {
return true;
}
+ //------------------------------------------------------------< Object >--
+
+ @Override
+ public String toString() {
+ StringBuilder builder = null;
+ for (MapEntry entry : getEntries()) {
+ if (builder == null) {
+ builder = new StringBuilder("{ ");
+ } else {
+ builder.append(", ");
+ }
+ builder.append(entry);
+ }
+ if (builder == null) {
+ return "{}";
+ } else {
+ builder.append(" }");
+ return builder.toString();
+ }
+ }
+
+ //-----------------------------------------------------------< private >--
+
/**
* Compares two map branches. Given the way the comparison algorithm
* works, the branches are always guaranteed to be at the same level
@@ -504,7 +500,7 @@ class MapRecord extends Record {
// both before and after buckets exist; compare recursively
MapRecord beforeBucket = beforeBuckets[i];
MapRecord afterBucket = afterBuckets[i];
- if (!compare(beforeBucket, afterBucket, diff)) {
+ if (!afterBucket.compare(beforeBucket, diff)) {
return false;
}
}