XSLTをどのようにプロファイルして最適化するのですか?

optimization profiling xslt

ブラウザでXMLファイルを表示するためのXSLTがあります。 XSLTは素朴に書かれており、現在実行するのに長い時間がかかります(数分)。

私のXMLファイルは適度なサイズ(〜1 MiB)であり、異なる文書を処理する同じ文書に対する他のXSLTはずっと速く実行されます。 だから私はそれが問題であるXMLのサイズではないことを知っています、それは私のXSLTです。

XSLTのプロファイリングと最適化についてはどうすればいいですか。

(ブラウザで複雑なXSLTを行うのは悪い考えでしょうか。 代わりにXSLTアプリケーション側を適用する必要がありますか?)

  28  17


ベストアンサー

どのXSLTエンジンを使用していますか? .NETエンジンとVisual Studioを使用している場合は、Visual Studioに統合されたhttp://msdn.microsoft.com/ja-jp/library/dd456801%28v=vs.110%29.aspx[XSLTプロファイラー]を使用できます。これはとても便利です。

他の優れたプロファイリングツールはAltovaのhttp://www.altova.com/products/xmlspy/xslt_profiler.html[XML Spy]とhttp://www.oxygenxml.com/[Oxygen]です。

XSLTを投稿する場合は、ボトルネックがどこにあるのかを説明するほうが簡単です。 一般的に、 ‘//’、

::の前や:: ::のようなXPath式には注意してください。 さらにいくつかの規則とベストプラクティス:

__
. `” // item “`を繰り返し使用しないでください。
. 同じノードセットを複数回評価しないでください。に保存する
変数。
. できれば 避けてください。 たとえば、position()を使用します。
. たとえばグループ化の問題を解決するには、
を使用します。
. テンプレートルールで複雑なパターンを避けます。 代わりに、
ルール。
. `preceding [-sibling]`または
`following [-sibling]`軸。 これは、nの2乗のパフォーマンスを持つアルゴリズムを示すことがよくあります。
. 同じノードセットを複数回ソートしないでください。 必要に応じて、名前を付けて保存します
結果ツリーのフラグメントで、 `node-set()`拡張機能を使用してアクセスします。
. 単純な `#PCDATA`要素のテキスト値を出力するには、「in」を使用します
「」への設定。

(http://www.dpawson.co.uk/xsl/sect4/N9883.html#d15756e150から)
__

これらの規則に従うことは通常非常に効率的なXSLTをもたらすでしょう、そしておそらくあなたはまったくプロファイラーを使う必要はないでしょう。

ブラウザでのXSLTについてのあなたの質問に関して:私はそれをお勧めしません。最初はあなたがプラットフォームに依存しないわけではなく(すべてのブラウザがそれをサポートするわけではない)。エンジン使用。

29


あなたが問題を観察したXSLTコードとXML文書を提供するなら、私と他の人々は*助けることを試みることができます。

  • http://saxonica.blogharbor.com/blog [Michael Kay]からのhttp://www.biglist.com/lists/xsl-list/archives/200006/msg00088.html [XSLTの使用方法とパフォーマンスのヒント]。 *:

  • XSLTを効率的に使用するための8つのヒント*:

    1. ソースドキュメントを小さくします。 必要に応じてドキュメントを分割します
      最初。

    2. 実行間でXSLTプロセッサ(およびJava VM)をメモリにロードしたままにする

    3. 同じスタイルシートを繰り返し使用する場合は、最初にコンパイルしてください。

    4. 同じソースドキュメントを繰り返し使用する場合は、それをメモリに保存してください。

    5. 同じ変換を繰り返し実行する場合はしないでください。 を保存する
      代わりに結果。

    6. 出力文書を小さくします。 たとえば、生成している場合
      HTML、CSSを使用します。

    7. 同じソースドキュメントを2回以上検証しないでください。

    8. 複雑な変換を複数の段階に分割します。

効率的なX SLTの書き方に関する8つのヒント:

  1. “` // item` “を繰り返し使用しないでください。

  2. 同じノードセットを複数回評価しないでください。に保存する
    変数。

  3. できれば “避けてください。 例えば、 `position()`を使うことで。

  4. たとえばグループ化の問題を解決するには、 “を使用します。

  5. テンプレートルールで複雑なパターンを避けます。 代わりに、
    ルール。

  6. `preceding [-sibling]`または
    `following [-sibling]`軸。 これはしばしば `n`二乗性能を持つアルゴリズムを示しています。

  7. 同じノードセットを複数回ソートしないでください。 必要に応じて、名前を付けて保存します
    結果ツリーのフラグメントで、 `node-set()`拡張機能を使用してアクセスします。

  8. 単純な#PCDATA要素のテキスト値を出力するには、「in」を使用します
    「」への設定。

20


市販の Oxgen XMLエディタには、XSLTファイルのプロファイリングおよびデバッグ用の機能があります。 これも良いXMLエディタです。

2


Windowsベースのマシンには Altova’s XMLSpyを使用するのが好きです。 プロファイラーも内蔵されています。 あなたは http://www.wonderhowto.com/how-to/video/how-to-edit-debug-and-profile-xslt-1-0-and-2-0-with-xmlspy-217858/[checkすることができますエディタの使用に関するビデオをご覧ください。 (プロファイラについての詳細は、5:45までスキャンしてください)。 それは商品です…​ タイムトライアル期間付き:)

1


タイトルとURLをコピーしました