You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by Alain Rouh <ro...@idp.fr> on 2001/03/14 17:49:44 UTC

Baisse de performances XalanJ1-XalanJ2

Bonjour,


Nous utilisons Xalan version Java pour réaliser des transformations XSLT, sur des fichiers XML
dont le volume est de l'ordre de 10Mo, sur PC (Windows 2000, 256Mo, 500Mhz), et avec 
le JDK Sun 1.3.

Les temps de traitement obtenus avec XalanJ version 1 sont de l'ordre de 4 minutes, avec 
pourtant une consomation mémoire qui monte à 176Mo, ce temps est néanmoins parfaitement 
satisfaisant.

Les premiers essais que j'ai réalisés avec XalanJ 2.0.0 (dont certaines extensions sont très 
intéressantes) donnent des temps de traitement très importants, j'ai donc supposé que les 
transformations XSLT utilisant beaucoup de XPath étaient inadaptées à un parser SAX, et 
j'ai créé un objet DOMSource avant d'invoquer le transformer ce qui a permis d'obtenir des 
résultats identiques à ceux obtenus avec XalanJ1, mais avec un temps de traitement de l'ordre 
de 20 minutes (même machine et mêmes données).

Il me semble probable que ma façon d'invoquer Xalan est en cause, en particulier est-il nécessaire 
de construire un objet DOMSource pour utiliser un parser DOM ?

Voici donc ci-dessous une copie du code que j'utilise, en vous remerciant par avance de toute 
remarque sur ce sujet :
        Transformer transformer = tFactory.newTransformer(new StreamSource(ficXSL));
        DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(ficIn);
        DOMSource domSource = new DOMSource(doc);
        domSource.setSystemId(ficIn);
        transformer.transform(domSource,new StreamResult(new FileOutputStream(ficOut)));





            Alain Rouh



--------------------------------------------------------------------
rouh@idp.fr
01 40 09 58 74
Software Engineer - IDP - http://www.idp.fr
62, bd Davout - 75020 Paris - France
std/fax: (33) 01 40 09 58 58 / 93 20
-------------------------------------------------------------------


Re: Baisse de performances XalanJ1-XalanJ2

Posted by James Melton <ja...@cylogix.com>.
Although my French is poor, I gather that you are concerned with
performance going from XalanJ1 to XalanJ2. I also see you are first
parsing your input into a DOM Document. Performance will be better if
you allow Xalan to do the parsing rather than passing in a parsed
Document (strange though that may seem at first).

Perhaps another French speaker can translate the details of your problem
into English so that a wider audience can advise you.

Jim.


____________________________________________________________
James Melton                 CyLogix
609.750.5190                 609.750.5100
james.melton@cylogix.com     www.cylogix.com

Re: Baisse de performances XalanJ1-XalanJ2

Posted by Frank Griffin <ft...@ntplx.net>.
Alain Rouh wrote:

> Bonjour,  Nous utilisons Xalan version Java pour réaliser des transformations
> XSLT, sur des fichiers XMLdont le volume est de l'ordre de 10Mo, sur PC
> (Windows 2000, 256Mo, 500Mhz), et avecle JDK Sun 1.3.
>
> We use XalanJ to do XSLT transformations on XML files of about 10MB on a PC
> (details above) using Sun's JDK 1,3 Les temps de traitement obtenus avec
> XalanJ version 1 sont de l'ordre de 4 minutes, avecpourtant une consomation
> mémoire qui monte à 176Mo, ce temps est néanmoins parfaitementsatisfaisant.
>
> The execution times from XalanJ1 are on the order of 4 minutes, however the
> memory usage gets up to 176MB, but this response time is nevertheless
> completely satisfactory.
>   Les premiers essais que j'ai réalisés avec XalanJ 2.0.0 (dont certaines
> extensions sont trèsintéressantes) donnent des temps de traitement très
> importants, j'ai donc supposé que lestransformations XSLT utilisant beaucoup
> de XPath étaient inadaptées à un parser SAX, etj'ai créé un objet DOMSource
> avant d'invoquer le transformer ce qui a permis d'obtenir desrésultats
> identiques à ceux obtenus avec XalanJ1, mais avec un temps de traitement de
> l'ordrede 20 minutes (même machine et mêmes données).
>
> The first tests I made with XalanJ 2.0.0 (of which certain new features are
> very interesting) gave very important execution times (?), I therefore
> supposed that the XSLT transformations using a lot of XPath wereunsuitable for
> a SAX parser, and I created a DOMSource object before invoking the
> transformer, which achieved identical results to those obtained with XalanJ1,
> but with an execution time on the order of 20 minutes (same machine, same
> data).
>   Il me semble probable que ma façon d'invoquer Xalan est en cause, en
> particulier est-il nécessairede construire un objet DOMSource pour utiliser un
> parser DOM ?
>
> It seems probable that my way of invoking Xalan is the cause, in particular is
> it necessary to construct a DOMSource object in order to use a DOM parser ?
>   Voici donc ci-dessous une copie du code que j'utilise, en vous remerciant
> par avance de touteremarque sur ce sujet :
>
> Here below is a copy of the code I use, thanking you in advance for any
> commentary on this matter.
>
>          Transformer transformer = tFactory.newTransformer(new
> StreamSource(ficXSL));        DocumentBuilderFactory dFactory =
> DocumentBuilderFactory.newInstance();        DocumentBuilder dBuilder =
> dFactory.newDocumentBuilder();        Document doc =
> dBuilder.parse(ficIn);        DOMSource domSource = new DOMSource(doc);
> domSource.setSystemId(ficIn);        transformer.transform(domSource,new
> StreamResult(new FileOutputStream(ficOut)));
>             Alain
> Rouh   --------------------------------------------------------------------
> rouh@idp.fr
> 01 40 09 58 74
> Software Engineer - IDP - http://www.idp.fr
> 62, bd Davout - 75020 Paris - France
> std/fax: (33) 01 40 09 58 58 / 93 20
> -------------------------------------------------------------------

A little rough in a few places, but I hope it helps.


RE: Baisse de performances XalanJ1-XalanJ2

Posted by Christian Aberger <Ch...@Aberger.at>.
Bonjour !

Sorry, I don't know French, only Latin (quid quid id est, timeo Danaos et
donas ferentes) /-(
And I don't know much Java. So propably I can't help, and please ignore what
I write here #-)

Nevertheless I experienced similar behaviour with Xerces-C, and finally
after nerving a lot of people in this mailing list ;-) I found a way where I
get similar performance results as before (maybe even better, don't know
cause it is fast enough).

What I understood is: It is not a good idead to do first parsing the xml
file into a DOM tree and then transforming away from it. No. This is not the
Xalan > 1.0 way, at least not for the C++ people. It gives better
performance to let Xalan parse both xml and xsl on the fly.

Hm, you have to parse it because you need the info or change the DOM Tree
before transforming?

Yes, this was also my problem. Just to give an idea: I made a simple
workaround. I used Xerces DOMPrint sample and now "print" the DOM tree in
memory to a stream and reparse it from there with Xerces ....? Yes, I know,
and I agree. But now it is fast enough for my purpose. Maybe this is a
solution only until the next version, cause I don't know what the horse will
contain next time.

wfR ChrisA

   -----Original Message-----
  From: Alain Rouh [mailto:rouh@idp.fr]
  Sent: Mittwoch, 14. März 2001 17:50
  To: xalan-dev@xml.apache.org
  Subject: Baisse de performances XalanJ1-XalanJ2


  Bonjour,


  Nous utilisons Xalan version Java pour réaliser des transformations XSLT,
sur des fichiers XML
  dont le volume est de l'ordre de 10Mo, sur PC (Windows 2000, 256Mo,
500Mhz), et avec
  le JDK Sun 1.3.

  Les temps de traitement obtenus avec XalanJ version 1 sont de l'ordre de 4
minutes, avec
  pourtant une consomation mémoire qui monte à 176Mo, ce temps est néanmoins
parfaitement
  satisfaisant.

  Les premiers essais que j'ai réalisés avec XalanJ 2.0.0 (dont certaines
extensions sont très
  intéressantes) donnent des temps de traitement très importants, j'ai donc
supposé que les
  transformations XSLT utilisant beaucoup de XPath étaient inadaptées à un
parser SAX, et
  j'ai créé un objet DOMSource avant d'invoquer le transformer ce qui a
permis d'obtenir des
  résultats identiques à ceux obtenus avec XalanJ1, mais avec un temps de
traitement de l'ordre
  de 20 minutes (même machine et mêmes données).

  Il me semble probable que ma façon d'invoquer Xalan est en cause, en
particulier est-il nécessaire
  de construire un objet DOMSource pour utiliser un parser DOM ?

  Voici donc ci-dessous une copie du code que j'utilise, en vous remerciant
par avance de toute
  remarque sur ce sujet :
          Transformer transformer = tFactory.newTransformer(new
StreamSource(ficXSL));
          DocumentBuilderFactory dFactory =
DocumentBuilderFactory.newInstance();
          DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
          Document doc = dBuilder.parse(ficIn);
          DOMSource domSource = new DOMSource(doc);
          domSource.setSystemId(ficIn);
          transformer.transform(domSource,new StreamResult(new
FileOutputStream(ficOut)));





              Alain Rouh



  --------------------------------------------------------------------
  rouh@idp.fr
  01 40 09 58 74
  Software Engineer - IDP - http://www.idp.fr
  62, bd Davout - 75020 Paris - France
  std/fax: (33) 01 40 09 58 58 / 93 20
  -------------------------------------------------------------------