You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/04/23 11:10:27 UTC
svn commit: r1675563 -
/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
Author: cziegeler
Date: Thu Apr 23 09:10:27 2015
New Revision: 1675563
URL: http://svn.apache.org/r1675563
Log:
SLING-4568 : Performance: MergingResourceProvider.ParentHidingHandler adds about 30pp rendering overhead. Apply partial patch from Joel Richard
Modified:
sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
Modified: sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java?rev=1675563&r1=1675562&r2=1675563&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java (original)
+++ sling/trunk/contrib/extensions/resourcemerger/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java Thu Apr 23 09:10:27 2015
@@ -206,12 +206,22 @@ class MergingResourceProvider implements
return null;
}
+ boolean first = true;
while (resources.hasNext()) {
final Resource resource = resources.next();
- // check parent for hiding
- // SLING 3521 : if parent is not readable, nothing is hidden
- final Resource parent = resource.getParent();
- final boolean hidden = (parent == null ? false : new ParentHidingHandler(parent).isHidden(holder.name));
+
+ final boolean hidden;
+ if (first) {
+ // The ParentHidingHandler does not have to be executed for the first resource because it isn't an
+ // overlay. This can drastically improve the performance in some cases.
+ hidden = false;
+ first = false;
+ } else {
+ // check parent for hiding
+ // SLING 3521 : if parent is not readable, nothing is hidden
+ final Resource parent = resource.getParent();
+ hidden = (parent == null ? false : new ParentHidingHandler(parent).isHidden(holder.name));
+ }
if (hidden) {
holder.resources.clear();
} else if (!ResourceUtil.isNonExistingResource(resource)) {