XalanJ 2.7.1과 1.0 호환 xslt 파일을 사용합니다. 우리는 Saxon-EE 9.7을 사용하여 xslt 2.0으로 바꾸고 싶습니다. 그래서 더 빠르게 작동한다면 타당성 조사를하고 싶습니다. XalanJ가 가장 느린 인터넷에서 이전에 모든 연구에서.버전 변경으로 XSL 1.0에서 XSLT 2.0으로 변경
평균 변환 시간은 989ms이지만 Saxon-EE는 버전을 1.0에서 2.0으로 변경하고 동일한 xslt 규칙을 1100ms 평균으로 실행합니다.
우리는 xslt 파일을 다시 작성해야한다는 뜻입니까 아니면 성능 측정에 오류가있는 것입니까? 변환을 변경해야하는 경우 특히 무엇입니까?
편집 2 :
성능 테스트 pourposes를 들어 우리가
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();
는 그 다음 transfor 방법에 대한 시간을 측정 GugleGuava의 스톱워치를 사용하여 샘플 응용 프로그램을 만듭니다. 변환을 1000 번 실행하고 처음 100 번의 실행을 무시하고 평균 시간을 측정합니다.
편집 3 : 총 시간 : 1816.153 밀리 초 나는 항상은 아니지만, 색슨의 Xalan보다 더 자주 훨씬 빠릅니다 색슨 프로파일을
<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'이 전달 되는가? Saxon이 자신의 트리 모델을 사용할 수 있도록'StreamSource' 또는'SAXSource'를 사용할 수 있습니까? 아니면 당신이 사용하는'DOMSource'입니까? –
StreamSource 내가 사용하는 것 – Xelian