You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by xsltuser <ch...@yahoo.com> on 2008/03/05 06:43:11 UTC
Poor Performance of JAXP transformer on passing FOP handler
Dear All,
Below is the snippet of code I'm using to do XML -> XSL-FO -> PDF
conversion. The problemmatic statement is transformer.transform(src, res);
which is taking 20-25 secs to execute which is not acceptable to the
business. I'm using FOP - 0.94
// Setup directories
File baseDir = new File(".");
File outDir = new File(baseDir, "out");
outDir.mkdirs();
// Setup input and output files
File xmlfile = new File(baseDir, "xml/xml/projectteam.xml");
File xsltfile = new File(baseDir,
"xml/xslt/projectteam2fo.xsl");
File pdffile = new File(outDir, "ResultXML2PDF.pdf");
// configure fopFactory as desired
FopFactory fopFactory = FopFactory.newInstance();
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// configure foUserAgent as desired
// Setup output
OutputStream out = new java.io.FileOutputStream(pdffile);
out = new java.io.BufferedOutputStream(out);
try {
// Construct fop with desired output format
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF,
foUserAgent, out);
// Setup XSLT
TransformerFactory factory =
TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new
StreamSource(xsltfile));
// Set the value of a in the stylesheet
transformer.setParameter("versionParam", "2.0");
// Setup input for XSLT transformation
Source src = new StreamSource(xmlfile);
// Resulting SAX events (the generated FO) must be piped
through to FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
} finally {
out.close();
}
Application logs display series of below messages during transformation
(which presumably taking bulk of the time)
2008-03-05 10:04:08,375 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-family, fo:table-cell
2008-03-05 10:04:08,382 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-family, fo:table-row
2008-03-05 10:04:08,387 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-family, fo:table-body
2008-03-05 10:04:08,393 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-family, fo:table
2008-03-05 10:04:08,400 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-family, fo:table-cell
2008-03-05 10:04:08,406 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-family, fo:table-row
2008-03-05 10:04:08,414 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:block
2008-03-05 10:04:08,419 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-cell
2008-03-05 10:04:08,423 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-row
2008-03-05 10:04:08,429 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-body
2008-03-05 10:04:08,436 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:table
2008-03-05 10:04:08,441 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-cell
2008-03-05 10:04:08,449 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-row
Any help in this regard is greatly appreciated
Thanks,
Charanpreet.
--
View this message in context: http://www.nabble.com/Poor-Performance-of-JAXP-transformer-on-passing-FOP-handler-tp15843663p15843663.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Poor Performance of JAXP transformer on passing FOP handler
Posted by xsltuser <ch...@yahoo.com>.
Thanks very much for your help!!!
I have managed to enhance performance drastically by turning off the FOP
logging messages. Thanks a ton!
Jeremias Maerki-2 wrote:
>
> The log output can indeed account for most of the performance loss. But
> that's easy to fix: just configure your preferred log subsystem so that
> only warnings and errors are generated.
>
> Please also note that the first rendering run is always the slowest as
> class loading and just-in-time compiling is occuring. Using modern JVMs
> can also improve performance a lot.
>
> See here for more info:
> http://xmlgraphics.apache.org/fop/0.94/embedding.html#basic-logging
> http://xmlgraphics.apache.org/fop/0.94/embedding.html#performance
> http://xmlgraphics.apache.org/fop/0.94/embedding.html#object-reuse
>
> On 05.03.2008 06:43:11 xsltuser wrote:
>>
>> Dear All,
>>
>> Below is the snippet of code I'm using to do XML -> XSL-FO -> PDF
>> conversion. The problemmatic statement is transformer.transform(src,
>> res);
>> which is taking 20-25 secs to execute which is not acceptable to the
>> business. I'm using FOP - 0.94
>>
>> // Setup directories
>> File baseDir = new File(".");
>> File outDir = new File(baseDir, "out");
>> outDir.mkdirs();
>>
>> // Setup input and output files
>> File xmlfile = new File(baseDir, "xml/xml/projectteam.xml");
>> File xsltfile = new File(baseDir,
>> "xml/xslt/projectteam2fo.xsl");
>> File pdffile = new File(outDir, "ResultXML2PDF.pdf");
>>
>> // configure fopFactory as desired
>> FopFactory fopFactory = FopFactory.newInstance();
>>
>> FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
>> // configure foUserAgent as desired
>>
>> // Setup output
>> OutputStream out = new java.io.FileOutputStream(pdffile);
>> out = new java.io.BufferedOutputStream(out);
>>
>> try {
>> // Construct fop with desired output format
>> Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF,
>> foUserAgent, out);
>>
>> // Setup XSLT
>> TransformerFactory factory =
>> TransformerFactory.newInstance();
>> Transformer transformer = factory.newTransformer(new
>> StreamSource(xsltfile));
>>
>> // Set the value of a in the stylesheet
>> transformer.setParameter("versionParam", "2.0");
>>
>> // Setup input for XSLT transformation
>> Source src = new StreamSource(xmlfile);
>>
>> // Resulting SAX events (the generated FO) must be piped
>> through to FOP
>> Result res = new SAXResult(fop.getDefaultHandler());
>>
>> // Start XSLT transformation and FOP processing
>> transformer.transform(src, res);
>> } finally {
>> out.close();
>> }
>>
>> Application logs display series of below messages during transformation
>> (which presumably taking bulk of the time)
>>
>> 2008-03-05 10:04:08,375 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-family, fo:table-cell
>> 2008-03-05 10:04:08,382 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-family, fo:table-row
>> 2008-03-05 10:04:08,387 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-family, fo:table-body
>> 2008-03-05 10:04:08,393 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-family, fo:table
>> 2008-03-05 10:04:08,400 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-family, fo:table-cell
>> 2008-03-05 10:04:08,406 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-family, fo:table-row
>> 2008-03-05 10:04:08,414 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:block
>> 2008-03-05 10:04:08,419 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-cell
>> 2008-03-05 10:04:08,423 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-row
>> 2008-03-05 10:04:08,429 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-body
>> 2008-03-05 10:04:08,436 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table
>> 2008-03-05 10:04:08,441 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-cell
>> 2008-03-05 10:04:08,449 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
>> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-row
>>
>> Any help in this regard is greatly appreciated
>>
>> Thanks,
>> Charanpreet.
>> --
>> View this message in context:
>> http://www.nabble.com/Poor-Performance-of-JAXP-transformer-on-passing-FOP-handler-tp15843663p15843663.html
>> Sent from the FOP - Users mailing list archive at Nabble.com.
>>
>
>
> Jeremias Maerki
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>
>
>
--
View this message in context: http://www.nabble.com/Poor-Performance-of-JAXP-transformer-on-passing-FOP-handler-tp15843663p15846640.html
Sent from the FOP - Users mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
Re: Poor Performance of JAXP transformer on passing FOP handler
Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
The log output can indeed account for most of the performance loss. But
that's easy to fix: just configure your preferred log subsystem so that
only warnings and errors are generated.
Please also note that the first rendering run is always the slowest as
class loading and just-in-time compiling is occuring. Using modern JVMs
can also improve performance a lot.
See here for more info:
http://xmlgraphics.apache.org/fop/0.94/embedding.html#basic-logging
http://xmlgraphics.apache.org/fop/0.94/embedding.html#performance
http://xmlgraphics.apache.org/fop/0.94/embedding.html#object-reuse
On 05.03.2008 06:43:11 xsltuser wrote:
>
> Dear All,
>
> Below is the snippet of code I'm using to do XML -> XSL-FO -> PDF
> conversion. The problemmatic statement is transformer.transform(src, res);
> which is taking 20-25 secs to execute which is not acceptable to the
> business. I'm using FOP - 0.94
>
> // Setup directories
> File baseDir = new File(".");
> File outDir = new File(baseDir, "out");
> outDir.mkdirs();
>
> // Setup input and output files
> File xmlfile = new File(baseDir, "xml/xml/projectteam.xml");
> File xsltfile = new File(baseDir,
> "xml/xslt/projectteam2fo.xsl");
> File pdffile = new File(outDir, "ResultXML2PDF.pdf");
>
> // configure fopFactory as desired
> FopFactory fopFactory = FopFactory.newInstance();
>
> FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
> // configure foUserAgent as desired
>
> // Setup output
> OutputStream out = new java.io.FileOutputStream(pdffile);
> out = new java.io.BufferedOutputStream(out);
>
> try {
> // Construct fop with desired output format
> Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF,
> foUserAgent, out);
>
> // Setup XSLT
> TransformerFactory factory =
> TransformerFactory.newInstance();
> Transformer transformer = factory.newTransformer(new
> StreamSource(xsltfile));
>
> // Set the value of a in the stylesheet
> transformer.setParameter("versionParam", "2.0");
>
> // Setup input for XSLT transformation
> Source src = new StreamSource(xmlfile);
>
> // Resulting SAX events (the generated FO) must be piped
> through to FOP
> Result res = new SAXResult(fop.getDefaultHandler());
>
> // Start XSLT transformation and FOP processing
> transformer.transform(src, res);
> } finally {
> out.close();
> }
>
> Application logs display series of below messages during transformation
> (which presumably taking bulk of the time)
>
> 2008-03-05 10:04:08,375 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-family, fo:table-cell
> 2008-03-05 10:04:08,382 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-family, fo:table-row
> 2008-03-05 10:04:08,387 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-family, fo:table-body
> 2008-03-05 10:04:08,393 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-family, fo:table
> 2008-03-05 10:04:08,400 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-family, fo:table-cell
> 2008-03-05 10:04:08,406 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-family, fo:table-row
> 2008-03-05 10:04:08,414 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:block
> 2008-03-05 10:04:08,419 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-cell
> 2008-03-05 10:04:08,423 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-row
> 2008-03-05 10:04:08,429 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-body
> 2008-03-05 10:04:08,436 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table
> 2008-03-05 10:04:08,441 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-cell
> 2008-03-05 10:04:08,449 [StaticCacheThread-4] DEBUG (PropertyMaker.java:
> 254) - PropertyMaker.findProperty: font-selection-strategy, fo:table-row
>
> Any help in this regard is greatly appreciated
>
> Thanks,
> Charanpreet.
> --
> View this message in context: http://www.nabble.com/Poor-Performance-of-JAXP-transformer-on-passing-FOP-handler-tp15843663p15843663.html
> Sent from the FOP - Users mailing list archive at Nabble.com.
>
Jeremias Maerki
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org