xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ALi <osat...@gmail.com>
Subject Re: problems with times
Date Wed, 21 Sep 2005 09:21:50 GMT
this is my code ...
xml is in resultstr (<?xml ...........>)
xslt is the name of the file (/name.file.xsl)
long tiempo1 = System.currentTimeMillis();
long tiempo2 = 0;
// Construct fop with desired output format
Driver driver = new Driver();
driver.setRenderer(Driver.RENDER_PDF);
// Setup output
try {
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
//out = new java.io.BufferedOutputStream(out);
try {
driver.setOutputStream(out);
// Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory
.newTransformer(new StreamSource(xsltfile));
// Set the value of a <param> in the stylesheet
transformer.setParameter("versionParam", "2.0");
// Setup input for XSLT transformation
Source src = new StreamSource(new StringReader(resultStr));
// Resulting SAX events (the generated FO) must be piped through to FOP
Result res = new SAXResult(driver.getContentHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
tiempo2 = System.currentTimeMillis();
response.setContentType("application/pdf");
byte[] cont = out.toByteArray();
response.setContentLength(cont.length);
response.getOutputStream().write(cont);
response.getOutputStream().flush();
} catch (TransformerException e) {
logger.warn("Error generando pdf :" + e.getMessage());
} finally {
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
logger.debug("Error cerrando el fichero " + e.getMessage());
}
logger.info("Tiempo 1:" + tiempo1);
logger.info("Tiempo 2:" + tiempo2);
logger.info("Total :" + (tiempo2 - tiempo1));

On 9/21/05, Jeremias Maerki <dev@jeremias-maerki.ch> wrote:
>
> I assume the operating system has very little influence on the time here.
> The fact that ALi has a big difference in the first couple of
> invocations is a clear indicator that he experiences the effect of class
> loading and just-in-time compiling by the JavaVM. And yes, ALi, the
> stylesheets have to be "compiled" (or at least parsed) but I guess from
> your code that this happens each time in your case. Unfortunately, we
> don't see the code of your makePDF() method.
>
> You can reuse the "pre-compiled" XSLT stylesheet if you use the JAXP
> Templates object. Please note that it's not FOP that compiles the XSLT
> stylesheet. It's probably you in makePDF() by using JAXP. FOP only
> processes the output of the XSL transformation. There are lots of
> articles on the web (like the following) that demonstrate how to cache
> Templates instances:
> http://www.javaworld.com/javaworld/jw-05-2003/jw-0502-xsl.html
>
> On 21.09.2005 10:22:22 Manuel Mall wrote:
> > Are you sure its not your operating system which causes the time
> > differences. Even OSes tend to warm up, ie. the first time around
> > existing stuff gets swapped out and the new code loaded. Next time
> > around this is not required any more.
> >
> > Manuel
> >
> > On Wed, 21 Sep 2005 04:07 pm, ALi wrote:
> > > Hello i have problems with times in generating pdf
> > > I want to know why the times are so different between one invocation
> > > and two
> > >
> > >
> > > for example i have the class makePDF
> > >
> > > main () {
> > > time1
> > > makePDF(xml,xsl);
> > > time2
> > > println(time2-time1)
> > > }
> > > the times are over 8 seconds
> > > more or less (with my xsl)
> > >
> > > if i have
> > > main () {
> > > for (1-10) {
> > > time1
> > > makePDF(xml,xsl);
> > > time2
> > > println(time2-time1)
> > > }
> > > }
> > >
> > > the first time is 8 seconds, but the seconds ones are less but much
> > > less the second is 3 seconds the third 1500 miliseconds and after
> > > over 300 miliseconds .....
> > > why is these? is it because the fop need to compile the xsl? Are any
> > > form to force to cache the compilation of xsl? (in order to always
> > > take the same time.
> > >
> > > We have different xsl and one class that makes alls
> > >
> > >
> > > thx for your help
>
>
>
> Jeremias Maerki
>
> many thx for the url jeremias

Mime
View raw message