2017-01-03 9 views
0

Javaアプリケーションは、XMLを「適切な」XMLに変換するためにXSLシートを使用します。問題は、結果のXMLが約20000以上の行で、Javaで変換するのに時間がかかることです(実動マシンでは約30秒)。XSLTグループ: "Muenchian Method"とfor-each-group

これはビジネスでは受け入れられません。私はXSLTを最適化する方法を探しています。

現在、私はXSLT 2.0グループ化を利用:

<xsl:for-each-group select="reportContent/transaction" group-by="transactionId"> 

(。私はグループを削除した場合、私は2Xブーストを取得し、それは確かにある)私達の開発者の一つは、これはパフォーマンスの低下の原因であると主張し、グループ化にMuenchianメソッドを使用することをお勧めします。

多くのコードを書き直す前に、誰かが何かを経験してグルーピングを書き直してみるのはです。Muenchianの方法では、パフォーマンスが向上しました。

+1

Muenchianグループでを置き換えるのはなぜ "たくさんのコードを書き直す"必要がありますか?アプローチがより速いと思うなら、それを実装し、それをプロファイルして結果を比較してください。 Muenchianのグループ化はXSLT 1.0のテクニックであり、2017年のXSLT 2.0プロセッサは同等のパフォーマンスで 'for-each-group'を実装することができません。パフォーマンスを向上させるために、コンパイルを提供する商用パッケージを調べることができます。 –

答えて

3

Muenchianのグループ化が<xsl:for-each-group>より速くなければならない本質的な理由はありません(実際には一般的には少し遅くなると予想される理由があります)。しかし、パフォーマンスでは悪魔は常に細部にとどまっています。特定のXSLT 2.0実装のコンテキストを除いて、このようなパフォーマンスの比較について質問するのは意味がありません。

このタスクでは30秒で非常に遅く聞こえますが、私は確かに改善が可能であると考えています。理想的には、実験的なチューニングを開始する前に、時間がどこにあるかを掘り下げて調べるのが理想的です。例えば、Saxonの-TP:profile.htmlなどのツールは非常に貴重です。

関連する問題