1.0互換のxsltファイルでXalanJ 2.7.1を使用します。私たちはSaxon-EE 9.7でxslt 2.0に変更したいので、これがより速く動作するならば、いくつかのフィージビリティスタディを行いたいと思っています。インターネットからの以前のすべての研究から、XalanJが最も遅いと言われています。バージョン変更だけでXSL 1.0からXSLT 2.0に変更
XalanJ平均時間での変換は989msですが、Saxon-EEではバージョンが1.0から2.0に変更され、同じxsltルールが1100msの平均で実行されます。
xsltファイルを書き直す必要があるか、パフォーマンス測定でエラーが発生する可能性がありますか? 変換を変更する必要がある場合、特に何ですか?
編集2:パフォーマンステストpourposesについては
我々だけtransfor方法のための時間を測定するためにGugleGuavaのストップウォッチを使用すると
final Stopwatch stopwatch = new Stopwatch();
TransformerFactory factory = new EnterpriseTransformerFactory();
Source xsl = new StreamSource(FileUtils.openInputStream(fileXSL), fileXSL.getAbsolutePath());
Transformer transformer = factory.newTransformer(xslt);
stopwatch.start();
transformer.transform(input, output);
stopwatch.stop();
を使用してサンプルアプリケーションを作成します。私は変換を1000回実行し、最初の100回の実行を無視して平均時間を測定します。
編集3: は合計時間:1816.153ミリ秒 私はサクソンプロファイラ
<table border="border" cellpadding="10">
<thead>
<tr>
<th>file</th>
<th>line</th>
<th>instruction</th>
<th>count</th>
<th>average time (gross)</th>
<th>total time (gross)</th>
<th>average time (net)</th>
<th>total time (net)</th>
</tr>
</thead>
<tbody>
<tr>
<td>"*_transformation.xsl"</td>
<td>234</td>
<td>template tplCreateAttribute</td>
<td align="right">5281262</td>
<td align="right">0.007</td>
<td align="right">36443.790</td>
<td align="right">0.007</td>
<td align="right">36443.790</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>248</td>
<td>template tplCreateDateAttribute</td>
<td align="right">1215364</td>
<td align="right">0.010</td>
<td align="right">11722.446</td>
<td align="right">0.008</td>
<td align="right">9177.567</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>265</td>
<td>template tplCreateBoolAttribute</td>
<td align="right">934716</td>
<td align="right">0.008</td>
<td align="right">7438.999</td>
<td align="right">0.008</td>
<td align="right">7438.999</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>392</td>
<td>template fnMathRandomNumber</td>
<td align="right">1215364</td>
<td align="right">0.005</td>
<td align="right">5937.933</td>
<td align="right">0.005</td>
<td align="right">5937.933</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>338</td>
<td>template tplCreateAttributeOBID</td>
<td align="right">607682</td>
<td align="right">0.018</td>
<td align="right">11004.523</td>
<td align="right">0.008</td>
<td align="right">5066.590</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>41</td>
<td>template dcx:object[@class = 'Object']</td>
<td align="right">311572</td>
<td align="right">2.599</td>
<td align="right">809778.821</td>
<td align="right">0.014</td>
<td align="right">4316.423</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>318</td>
<td>template tplCreateAttributeWithDefault</td>
<td align="right">311572</td>
<td align="right">0.011</td>
<td align="right">3500.819</td>
<td align="right">0.011</td>
<td align="right">3500.819</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>365</td>
<td>template tplCreateAttributeObjectState</td>
<td align="right">311572</td>
<td align="right">0.008</td>
<td align="right">2645.134</td>
<td align="right">0.008</td>
<td align="right">2645.134</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>376</td>
<td>template fnDateConvert</td>
<td align="right">592220</td>
<td align="right">0.004</td>
<td align="right">2544.879</td>
<td align="right">0.004</td>
<td align="right">2544.879</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>201</td>
<td>template dcx:object[@class = 'Object Smpl']</td>
<td align="right">296110</td>
<td align="right">2.530</td>
<td align="right">749090.244</td>
<td align="right">0.005</td>
<td align="right">1545.430</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>33</td>
<td>template /</td>
<td align="right">1</td>
<td align="right">78836.780</td>
<td align="right">78836.780</td>
<td align="right">219.216</td>
<td align="right">219.216</td>
</tr>
<tr>
<td>"*_transformation.xsl"</td>
<td>26</td>
<td>variable constAlphabetUpperCase</td>
<td align="right">2</td>
<td align="right">0.229</td>
<td align="right">0.458</td>
<td align="right">0.229</td>
<td align="right">0.458</td>
</tr>
</tbody>
</table>
SaxonのAPIとツリーモデルを使用するか、JAXPとおそらくDOMを入力として使用して、コマンドラインやJavaアプリケーションからSaxonを実行したことと、測定した方法と内容を少なくとも説明してください。 –
どのような 'input'が渡されるのですか?' StreamSource'や 'SAXSource'を使ってSaxonが独自のツリーモデルを使うことができますか?それとも、あなたが使っているDOMSourceですか? –
StreamSource私は – Xelian