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
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #18264 | Fri Jan 30 12:24:37 MST 2009 | ted.goddard | cache RenderKit instance ( |
Files Changed | ||||
MODIFY
/icefaces/trunk/icefaces/core/src/com/icesoft/faces/context/BridgeFacesContext.java
|
Ted Goddard
created issue -
Ted Goddard
made changes -
Field | Original Value | New Value |
---|---|---|
Status | Open [ 1 ] | Resolved [ 5 ] |
Fix Version/s | 1.8RC1 [ 10143 ] | |
Resolution | Fixed [ 1 ] |
Ken Fyten
made changes -
Fix Version/s | 1.8 [ 10161 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
Test for equality on renderKitId and use the factory if the id does not match the cached copy.