Author: jukka
Date: Fri Feb 28 19:36:05 2014
New Revision: 1573042

URL: http://svn.apache.org/r1573042
Log:
OAK-1418: Read performance regression

Optimize getProperty calls for the common case where the argument is just a 
name, with no other path components

Modified:
    
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java?rev=1573042&r1=1573041&r2=1573042&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
 Fri Feb 28 19:36:05 2014
@@ -249,8 +249,15 @@ public class NodeDelegate extends ItemDe
     @CheckForNull
     public PropertyDelegate getPropertyOrNull(String relPath)
             throws RepositoryException {
-        Tree parent = getTree(PathUtils.getParentPath(relPath));
-        String name = PathUtils.getName(relPath);
+        Tree parent = tree;
+        String name = relPath;
+
+        int slash = relPath.lastIndexOf('/');
+        if (slash != -1) {
+            parent = getTree(relPath.substring(0, slash));
+            name = relPath.substring(slash + 1);
+        }
+
         if (parent != null) {
             PropertyDelegate property =
                     new PropertyDelegate(sessionDelegate, parent, name);
@@ -272,8 +279,15 @@ public class NodeDelegate extends ItemDe
      */
     @Nonnull
     public PropertyDelegate getProperty(String relPath) throws 
RepositoryException {
-        Tree parent = getTree(PathUtils.getParentPath(relPath));
-        String name = PathUtils.getName(relPath);
+        Tree parent = tree;
+        String name = relPath;
+
+        int slash = relPath.lastIndexOf('/');
+        if (slash != -1) {
+            parent = getTree(relPath.substring(0, slash));
+            name = relPath.substring(slash + 1);
+        }
+
         return new PropertyDelegate(sessionDelegate, parent, name);
     }
 


Reply via email to