volodymyr-mykhailyk / mXSLT

User-Land parallel processing of XSLT

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This project is a code base for poster "User-land parallel processing of XSLT" presented on XMLPrague 2012. It include all sources and test examples that was used for the poster.

Solution concepts:
- works on top of standard XSLT engine
- doesn't require modification of original transformation
- tasks for parallel processing created from XSLT code
- tasks are based on input elements
- easy to use in Rule-Based stylesheet
- provide performance improvements with small tasks (less then 1sec)
- works faster then built-in solution

Solution drawbacks
- higher memory consumption then built-in solution
- complex evaluation on transformation top level decrease performance improvements
- variable content cannot be created in parallel
- pre-calculated data cannot be passed to new thread
- context of parallel task can single element only

How to use solution in your environment:
1. Unpack mXSLT-VERSION.zip to some folder
2. List all libraries from lib folder in classpath
3. List mXSLT-VERSION.jar in classpath from dist folder
4. Run java com.vmykhailyk.xsl.MXSLTRunner -s:PATH_TO_SOURCE -o:PATH_TO_OUTPUT -xsl:PATH_TO_XSL
5. You can specify standard Saxon configuration file with -config: option. It will be used to configure Saxon Processor

Example command line:
java -cp mXSLT-0.8.0.541.jar;lib/saxon9he.jar;lib/log4j.jar;lib/resolver.jar;lib/commons-pool-1.5.5.jar
com.vmykhailyk.xsl.MXSLTRunner -s:input/xMark/out01.xml -o:output/out.xml -xsl:xsl/xMark/mXSLT.xsl

Threads spawning from xsl code:
More info hot to trigger multiple threads is coming. At the moment you could find some hints in xsl/xMark/mXSLT.xsl file

Maximum threads count:
At the moment code allocate number threads accordinly to the availabale CPU returned from java Runtime.availableProcessors() method. 
It is possible to make this parameter configurable from command line.

About

User-Land parallel processing of XSLT


Languages

Language:Java 100.0%