[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Streaming with XSLT version 3.0


Subject: Re: [xsl] Streaming with XSLT version 3.0
From: Radu Pisoi <radu_pisoi@xxxxxxx>
Date: Wed, 12 Mar 2014 13:48:31 +0200

David,

I'm referring to the transformation under discussion. When I run the transformation from oXygen the bytecode generation option was not active. I tried also with this option enabled but I got the same result. So, this was the reason why I didn't mention the value of the 'generate bytecode' option.

These are my test results:
Running the transformation from oXygen using a 3.5 GB XML file:
* with bytecode generation on, the execution time was 164 sec;
* with bytecode generation off, the execution time was 170 sec.

Running the same transformation from command line the result was:

* with bytecode generation on
d:\workspace\eXml>java -Xmx180m -Xss4096k -Xms48m -cp d:\workspace\eXml\lib\saxon9ee.jar net.sf.saxon.Transform -TJ -t -it:main -xsl:"../test
oxygen/huge file/wiki-03.xsl"
Saxon-EE 9.5.1.3J from Saxonica
Java version 1.7.0_45
Using license serial number V000587
Generating byte code...
Stylesheet compilation time: 287 milliseconds
Processing (no source document) initial template = main
URIResolver.resolve href="enwiki-20091103-stub-articles.xml" base="file:/d:/workspace/eXml/../test%20oxygen/huge%20file/wiki-03.xsl"
Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Writing to file:/d:/workspace/eXml/out/output-wiki-03.xml
Execution time: 2m 37.295s (157295ms)
Memory used: 15868120
NamePool contents: 23 entries in 23 chains. 8 URIs


* with bytecode generation off
d:\workspace\eXml>java -Xmx180m -Xss4096k -Xms48m -cp d:\workspace\eXml\lib\saxon9ee.jar net.sf.saxon.Transform -TJ -t -config:"../test oxygen
/huge file/config.xml" -it:main -xsl:"../test oxygen/huge file/wiki-03.xsl"
Saxon-EE 9.5.1.3J from Saxonica
Java version 1.7.0_45
Using license serial number V000587
Stylesheet compilation time: 241 milliseconds
Processing (no source document) initial template = main
URIResolver.resolve href="enwiki-20091103-stub-articles.xml" base="file:/d:/workspace/eXml/../test%20oxygen/huge%20file/wiki-03.xsl"
Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
Writing to file:/d:/workspace/eXml/out/output-wiki-03.xml
Execution time: 2m 38.449s (158449ms)
Memory used: 28133336
NamePool contents: 23 entries in 23 chains. 8 URIs


I used the next Saxon configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<configuration
edition="EE"
xmlns="http://saxon.sf.net/ns/configuration">
<global generateByteCode="false" schemaValidation="strip" compileWithTracing="true" timing="true" />
</configuration>


However, the default value of the 'generate-bytecode' option is different when you run a transformation with Saxon-EE from oXygen or from command line. In oXygen the bytecode generation is disabled by default.

There were some reasons why we chose to disable this option:
* at the beginning, there were some issues related to this option which I think have been resolved. So, to avoid them, we considered that this option should be disabled by default.
* we considered that disabling the bytecode-generation option is not important for an user who develops a stylesheet in oXygen because the development process involves many changes over the stylesheet and the bytecode should be regenerated at each transformation. So, in many cases, the user will not get an extra performance time.


In the future, I'm considering important a mechanism which ensure us to have the same default options for the Saxon processor when running a transformation from oXygen or from command line.
This way, we will avoid situations like this, when an user gets a different behavior/result by running a transformation from command line or from oXygen.



Regards, Radu -- Radu Pisoi <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com


On 3/11/2014 17:12, David Rudel wrote:
Radu,
Regarding your "In conclusion" paragraph, is this for the
transformation under discussion, or are you speaking more generally?
The reason I ask is that at one time oXygen's default behavior was to
disable byte-code generation. If that is still the case, wouldn't a
use also need to enable byte-code generation in order to get similar
performance?


Current Thread