Re: Processor Performance

Subject: Re: Processor Performance
From: Paul Levin <plevin@xxxxxxx>
Date: Wed, 19 Jan 2000 10:25:14 -0500
Any particular reason for LotusXsl and the IBM XML Parsers not being included in
the test ?


WYSOCKI Adalbert wrote:

> Finnaly someone interested in XSLT performance processors.
> I asked for those informations before but nobody was able to give me a
> response.
>
> Adalbert WYSOCKI
>
> I performed some tests resumed above:
>
>     Tests on XSLT processors
>     ------------------------
>
> The main point to evaluate in order to decrease the processing time applying
> style rules to an XML document is to choose the best XSL Processor
> associated with the best XML parser. I mean the processor that have the best
> conformance with regards to XSLT recommendations and that processes style
> sheets as fast as possible and as regularly as possible. For that we have
> performed some test with each processor with different XSL documents and XML
> documents to reflect different possible cases. Results are resumed in the
> following paragraph.
>
>     Tested processors
>     -----------------
>
> - XT version Version 19991105 (the reference) written by James Clark
> implementing the last recommendations(http://www.jclark.com)
> - Saxon Version 5.0 written by Mike Kay implements the last recommendations
> (http://users.iclway.co.uk/mhkay/saxon)
> - Xalan v0.19.1 processor known in the past as Lotus XSL (It have been
> offered by IBM to an open source apache XML project
> (http://xml.apache.org)).
> - Oracle v2_0_2_6 processor part of Oracle 8i database product.
>
>     Enviromnent
>     -----------
>
> - PC Pentium III 500
> - 256 Mo
> - Windows NT 4.0 Server
> - JDK 1.2.2 (+ JIT)
>
>      Results
>      -------
>
> For each test given results are:
>
> - An average on times get from the test performed 60 times
> - The minimum value from 60 times
> - The maximum value from 60 times
>
>    *********
>    * Test1 *
>    *********
>
> Documents:
>
> - XML document: stats.xml (8ko)
> - Style document:  statistics_list.xsl (47ko)
>
>  ---------------------------------------------------------------------------
> --------------------------------------------
> |Processeur   |    XT + Xerces  |  XT + SUN  |  Saxon + Xerces  |  Saxon +
> SUN  |  Xalan + Xerces  |  Oracle + Oracle   |
>  ---------------------------------------------------------------------------
> --------------------------------------------
> |Average (ms) |    54.58333333  |    51.75   |    108.6333333   |     159.9
> |      151.7167    |       169.75       |
> |Min (ms)     |       20        |    20      |      50          |     90
> |      80          |       140          |
> |Max (ms)     |       350       |    421     |      610         |     851
> |      932         |       1101         |
>  ---------------------------------------------------------------------------
> --------------------------------------------
>
>    *********
>    * Test2 *
>    *********
>
> Documents:
>
> - XML document: stats2.xml (21ko)
> - Style document:  statistics_list.xsl (47ko)
>
> Changes: contracts BO with class="display" attribute has been increased by
> 10 so that the matching of this BO in the XSL style sheet is made 10 times
> more that in the preceding case.
>
>  ---------------------------------------------------------------------------
> --------------------------------------------
> |Processeur   |    XT + Xerces  |  XT + SUN  |  Saxon + Xerces  |  Saxon +
> SUN  |  Xalan + Xerces  |  Oracle + Oracle   |
>  ---------------------------------------------------------------------------
> --------------------------------------------
> |Average (ms) |       165.2     |    220.8   |      368.55      |     419.1
> |      552.8       |       422.1        |
> |Min (ms)     |       110       |    140     |      281         |     320
> |      400         |       270          |
> |Max (ms)     |       650       |    670     |      962         |     1182
> |      1592        |       1472         |
>  ---------------------------------------------------------------------------
> --------------------------------------------
>
>         XSLT Rules
>       ----------
>
> I have performed some tests changing, replacing and inverting rules in XSL
> style sheets.
> We found a rule (use absolute path instead of //) that makes documents
> processing 10 times quickly.
> Resulting XSL documents will be processed in less than 100 ms. I think it is
> satisfying comparing to database requests processing time.
>
>       C/C++ vs. Java
>       --------------
>
> Processors in C language are not yet available in general. The XSLT
> recommendations are in most part based on the Java language especially
> concerning some functions like those for number formatting or some others.
> For those reasons their implementation in C language seems to be more
> difficult than in Java. I have tested Xalan XSLT processor in its first
> version. A lot of XSLT functionalities are not yet implemented and its debug
> mode makes it process very slowly. I think to see very efficient XSLT
> processor we have to wait some times.
>
> Results of the test performed on the summary.xsl and summary.xml documents.
>  ------------------------------------------
> |Processor   |   XT Java   |    Xalan C++  |
>  ------------------------------------------|
> |processig   |     500     |     2000      |
> |time (ms)   |             |               |
>  ------------------------------------------
>
>       XT processor DOM source or serialized DOM InputSource
>       -----------------------------------------------------
>
>  -------------------------------------------------
> | Serialized   |  Login   |  Summary   |  Stats   |
> | InputSource  |  page    |   page     |  page    |
> |-------------------------------------------------|
> |              |   40     |    240     |   130    |
> |              |   40     |    230     |   160    |
> |              |   40     |    260     |   120    |
> |              |   30     |    230     |   140    |
> |              |   40     |    240     |   120    |
> |              |   30     |    240     |   121    |
> |              |   40     |    240     |   100    |
> |              |   30     |    230     |   120    |
> |              |   60     |    270     |   120    |
> |              |   41     |    270     |   110    |
> |-------------------------------------------------|
> | Average      |  39.1    |    245     |   124.1  |
>  -------------------------------------------------
>  -------------------------------------------------
> | DOM Object |    Login   |  Summary   |  Stats   |
> |            |     page   |   page     |  page    |
> |-------------------------------------------------|
> |            |    40      |    571     |    171   |
> |            |    30      |    521     |    130   |
> |            |    30      |    491     |    271   |
> |            |    40      |    430     |    130   |
> |            |    30      |    400     |    130   |
> |            |    41      |    401     |    140   |
> |            |    40      |    411     |    130   |
> |            |    30      |    390     |    120   |
> |            |    30      |    401     |    140   |
> |            |    40      |    400     |    130   |
> |-------------------------------------------------|
> | Average    |    35.1    |    441.6   |    149.2 |
>  -------------------------------------------------
>
> We can see that XT runs in general case better with a serialized InputSource
> document that with a DOM object.
>
>       Conclusions
>       -----------
>
> Comparing to the fastest other XSLT processors XT is two times quickly. What
> is important too is the difference between the behavior of the XT and Saxon
> processor associated with from one part ProjectX parser (SUN) and from the
> other part with Xerces parser  (xml apache project).
>
>       Annexe A
>       --------
>
> - Stats.xml
>
>         Size: 8ko
>         Contains:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <test>
>   <protocol>
>     <userrequest>
>       <xmldoc>common/statistics/statistics_offers_default.xml</xmldoc>
>       <statstype>offers</statstype>
>       <style>common/statistics/statistics_list.xsl</style>
>       <statsobjectid>1000</statsobjectid>
>
> <urlbase>/servlet/ImServlet?JServSessionId=3fe7ad6d23f5084e.3.944480829706&a
> mp;</urlbase>
>       <dateformat>MM/dd/yyyy</dateformat>
>     </userrequest>
>   </protocol>
>
>   <businessobject>
>    <merchant>
>       <id>1000</id>
>       <pagetitle>Welcom the best merchant pe qui peut tout "Peter"
> !!!!</pagetitle>
>       <currentquarter>1</currentquarter>
>       <state>A</state>
>       <businesscontact>
>         <id>1000</id>
>         <login>pe</login>
>         <lastaccess>12/06/1999</lastaccess>
>         <profile>A</profile>
>       </businesscontact>
>     </merchant>
>     <offer>
>       <id>1000</id>
>       <name>http://www.perdu.com</name>
>       <familyRef>1000</familyRef>
>     </offer>
>     <contract class="display">
>       <offer>
>         <name>http://www.perdu.com</name>
>         <commissionmethods>
>           <commissionmethodRef>1000</commissionmethodRef>
>         </commissionmethods>
>         <id>1000</id>
>       </offer>
>       <subscriber>
>         <affiliate>
>           <id>1010</id>
>           <name>aldo1</name>
>         </affiliate>
>       </subscriber>
>       <id>1016</id>
>       <name />
>       <enddate format="MM/dd/yyyy">01/27/2000</enddate>
>     </contract>
>
>    <!- contract BO with class="display" attribute x3 -- >
>
>     <contract>
>       <offer>
>         <name>http://www.perdu.com</name>
>         <commissionmethods>
>           <commissionmethodRef>1000</commissionmethodRef>
>         </commissionmethods>
>         <id>1000</id>
>       </offer>
>       <subscriber>
>         <affiliate>
>           <id>1010</id>
>           <name>aldo1</name>
>         </affiliate>
>       </subscriber>
>       <id>1016</id>
>       <name />
>       <enddate format="MM/dd/yyyy">01/27/2000</enddate>
>     </contract>
>
>     <!- contract BO x3 -- >
>
>     <parameter>
>       <id>6</id>
>       <name>Number of buy</name>
>       <type>F</type>
>       <backendparameterid>6</backendparameterid>
>     </parameter>
>
>     <!-- parameter BO x11 -->
>
>     <intervaldates>
>       <type>thismonth</type>
>       <dateformat>MM/dd/yyyy</dateformat><begindate
> format="MM/dd/yyyy">12/01/1999</begindate>
>       <enddate format="MM/dd/yyyy">12/05/1999</enddate>
>       <numberofdays>4</numberofdays>
>     </intervaldates>
>
>     <commissions>
>       <commissiondate format="MM/dd/yyyy">12/01/1999</commissiondate>
>       <commissiondate format="MM/dd/yyyy">12/05/1999</commissiondate>
>       <contract groupby="yes">
>         <id>1016</id>
>       </contract>
>       <value>0.0</value>
>     </commissions>
>
>     <!-- commissions BO x3 -->
>
>   </businessobject>
> </test>
>
> - Stats2.xml
>
> Size: 21 ko
> Contains:
>
> The same that the preceding (stats.xml) but contracts BO with class=?
> display? attribute has been increased by 10 so that the matching of this BO
> in the XSL style sheet is made 10 times more that in the preceding case.
>
> - statistics_list.xsl
>
> Statistics_list.xsl
>
>         Size: 47ko
>         Contains: Too long to be inserted
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread