Subject: RE: Processor Performance From: "WYSOCKI Adalbert" <waldi@xxxxxxxxxxxxxx> Date: Wed, 19 Jan 2000 14:52:40 +0100 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Processor Performance, Mike Alsup | Thread | RE: Processor Performance, Sebastian Rahtz |
Positioning inline objects, Bovone Stefano | Date | RE: Processor Performance, Sebastian Rahtz |
Month |