0

I am facing a performance issue while doing transformation using XSLT.

It takes around 13 to 14 seconds to transform the data provided.

In the mean time I noticed a warning in the console logs as

[ERR 0635] Some generated functions exceeded the JVM method size limit and were automatically split into smaller functions. You may get better performance by manually splitting very large templates into smaller templates, by using the 'splitlimit' option to the Process or Compile command, or by setting the 'http://www.ibm.com/xmlns/prod/xltxe-j/split-limit' transformer factory attribute.

So looking at that error I even tried setting the attribute the way shown below.

TransformerFactory tf = TransformerFactory.newInstance();
tf.setAttribute( "http://www.ibm.com/xmlns/prod/xltxe-j/split-limit", Integer.valueOf(1500));

The number 1500 I took from here.

But I am not really sure whether this would really help when there is a Load test performed.

Can someone guide me on how do I achieve the performance improvement in transformation?

JVM underlying is in Websphere App Server.

ᄂ ᄀ
  • 5,669
  • 6
  • 43
  • 57
Sam
  • 2,352
  • 4
  • 32
  • 45
  • Can you minimize you stylesheet such that you are only left with the troubling, lengthy functions, and show those? Perhaps we can adjust them in such a way that they run more optimally. – Abel Sep 01 '15 at 12:27
  • @Abel I have a 3000 line of XSL which actually is used for making SOAP request. Not realy sure if I can minimize that. – Sam Sep 01 '15 at 12:51
  • Well, the error raised suggests a large function / template. Perhaps you can find this function (or replace a few functions with shorter versions). Without seeing the troubling parts of the XSL it will be hard to give suggestions. – Abel Sep 01 '15 at 14:23
  • PS: I don't mean to minimize the 3000 lines (which can be daunting), but just reorganizing it in such a way that the JVM'ed version of your functions does not exceed this limit anymore. If you have large named templates, try splitting them (this should be trivial to do). Perhaps it is possible to find the names of the actual functions causing this error by breaking on and/or investigating this error's thread dump? – Abel Sep 03 '15 at 12:27

0 Answers0