Details
Description
BridgeFacesContext.getRenderKit() is called repeatedly in a single request and uses the factory each time. Performance could likely be improved through caching.
(Diff also shows experimental timer utility.)
--- src/com/icesoft/faces/context/BridgeFacesContext.java (revision 18259)
+++ src/com/icesoft/faces/context/BridgeFacesContext.java (working copy)
@@ -211,19 +211,25 @@
return ((Vector) obj).iterator();
}
+ RenderKit renderKit = null;
+
public RenderKit getRenderKit() {
- UIViewRoot viewRoot = getViewRoot();
- if (null == viewRoot) {
- return (null);
+long start = com.icesoft.faces.util.TimerUtil.start();
+ if (null != renderKit) {
+ UIViewRoot viewRoot = getViewRoot();
+ if (null == viewRoot) {
+ return (null);
+ }
+ String renderKitId = viewRoot.getRenderKitId();
+ if (null == renderKitId) {
+ return (null);
+ }
+
+ RenderKitFactory renderKitFactory = (RenderKitFactory)
+ FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ renderKit = renderKitFactory.getRenderKit(this, renderKitId);
}
- String renderKitId = viewRoot.getRenderKitId();
- if (null == renderKitId) {
- return (null);
- }
-
- RenderKitFactory renderKitFactory = (RenderKitFactory)
- FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
- RenderKit renderKit = renderKitFactory.getRenderKit(this, renderKitId);
+com.icesoft.faces.util.TimerUtil.add("RKIT", start);
return (renderKit);
}
(Diff also shows experimental timer utility.)
--- src/com/icesoft/faces/context/BridgeFacesContext.java (revision 18259)
+++ src/com/icesoft/faces/context/BridgeFacesContext.java (working copy)
@@ -211,19 +211,25 @@
return ((Vector) obj).iterator();
}
+ RenderKit renderKit = null;
+
public RenderKit getRenderKit() {
- UIViewRoot viewRoot = getViewRoot();
- if (null == viewRoot) {
- return (null);
+long start = com.icesoft.faces.util.TimerUtil.start();
+ if (null != renderKit) {
+ UIViewRoot viewRoot = getViewRoot();
+ if (null == viewRoot) {
+ return (null);
+ }
+ String renderKitId = viewRoot.getRenderKitId();
+ if (null == renderKitId) {
+ return (null);
+ }
+
+ RenderKitFactory renderKitFactory = (RenderKitFactory)
+ FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+ renderKit = renderKitFactory.getRenderKit(this, renderKitId);
}
- String renderKitId = viewRoot.getRenderKitId();
- if (null == renderKitId) {
- return (null);
- }
-
- RenderKitFactory renderKitFactory = (RenderKitFactory)
- FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
- RenderKit renderKit = renderKitFactory.getRenderKit(this, renderKitId);
+com.icesoft.faces.util.TimerUtil.add("RKIT", start);
return (renderKit);
}
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Test for equality on renderKitId and use the factory if the id does not match the cached copy.