On Thu, 6 Mar 2003, Stephan Michels wrote: > On Thu, 6 Mar 2003, Carsten Ziegeler wrote: > > > > > Stephan Michels wrote: > > > > > > I do some profiling today, and wondering why the XSLT transformer > > > burns performance like hell in setup(). After some debugging I noticed > > > that the XSLT transformer create a complete new template/handler for > > > each call of setup(), that because the parameter 'use-store' in > > > cocoon.xconf is set to 'false' per default. > > > > > > After setting this parameter to 'true', the performance increased > > > dramatically. > > > > > > So, is there a reason, why this parameter is set to 'false'? When > > > not, I would change it to 'true'. > > > > > There was a reason: a memory leak :) So you can change from performance > > to memory leak. This leak was at least in last Xalan versions, I never > > tested if it is in the latest, so perhaps this is fixed now. > > If not, you can run into serious memory problems. > > Doh! ;-) I'll make some longtime stability tests, to verify this. The > memory leak should also occur if you use the store, except if you forget > to remove the entries. At the moment, the concept of the XSLTC(and other) > doesn't make any sense, because you compile all used stylesheets for > every request :-/
I got NotSerializableException, if I stop the container. This remind with my problems with LexicalTransformer. I solved this problem using own writeObject() and readObject() methods, but the XSLTProcessorImpl using Object[] instances. I also don't know why this array isn't serializable, perhaps the Templates class isn't serializable. Yesterday I measured a performance enhancement by the factor 20x . Before each request took 2000-5000ms, which was untenable. After setting this option, each request took 50-100ms(cached). Perhaps you have an idea, where the problem lie on? Thanks, Stephan Michels. ERROR (2003-03-07) 15:12.15:772 [core.store.transient] (Unknown-URI) Unknown-thread/MRUMemoryStore: Error in dispose() java.io.NotSerializableException: org.apache.excalibur.xml.xslt.XSLTProcessorImpl at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1330) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1302) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1245) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1224) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1050) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278) at org.apache.excalibur.store.impl.AbstractFilesystemStore.serializeObject(AbstractFilesystemStore.java:479) at org.apache.excalibur.store.impl.AbstractFilesystemStore.store(AbstractFilesystemStore.java:150) at org.apache.excalibur.store.impl.MRUMemoryStore.dispose(MRUMemoryStore.java:129) at org.apache.avalon.excalibur.component.DefaultComponentFactory.decommission(DefaultComponentFactory.java:320)