2

XSLT は初めてです。XML ドキュメントがあり、XML を HTML テーブルに変換するために XSL を使用しています。XML はサーバーから Web クライアントへの応答です。この場合は IE9 ブラウザです。XSLT 処理は「ch3」ノードの数は 1 ~ 100000 の範囲です。

以下は、私がやっていることのサンプルコードです。

以下の xsl コードでは、すべてのループで変数が作成されます。この作成がブラウザのメモリに与える影響を知りたいです。また、パフォーマンスに影響はありますか?

    ============XMLDoc=======
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <root>
    <ch1>
      <ch2>
       <ch3 a="bosy" b="" c="5" d="nobody"/>
        ......        

     </ch2>
    </ch1>
    </root>

     ============XMLDoc=======
      ============XSLSheet=======

     <?xml version="1.0" encoding="ISO-8859-1"?>
     <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:template match="root/ch1">
        ......
      <xsl:for-each select="ch1/ch">
        <xsl:variable name="color">
         <xsl:choose>
         <xsl:when test="@c = '5'">orange</xsl:when>
          <xsl:when test="@c = '4'">red</xsl:when>
         <xsl:when test="@c = '3'">white</xsl:when>
         <xsl:when test="@c = '2'">gree</xsl:when>
         <xsl:when test="@c = '1'">yellow</xsl:when>
         <xsl:when test="@c = '0'">blue</xsl:when>
        </xsl:choose>
       </xsl:variable>
         .............
     </xsl:for-each>
      .............
      <xsl-template>

    </xsl:transform>

      ============XSL Sheet=======
4

3 に答える 3

0

これは間違いなく実装固有のものであり、ブラウザによって異なる可能性があります。

ただし、このコンテキストの変数は、for-each ループの反復ごとに不要になるため、自己尊重型の XSLT プロセッサはメモリ内に 100000 個の値を持つ必要はなく、反復ごとにメモリを解放できます。

于 2012-11-28T10:28:57.737 に答える
0

XSLT変数はかなり安いと思います。一般的に、実際に問題がない限り、パフォーマンスについて心配することはありません。これらの 100000 ノード ドキュメントの 1 つを生成して、パフォーマンスが許容できるかどうかを確認することができます。

于 2012-11-28T08:39:09.177 に答える
0

ボトムアップではなく、トップダウンでパフォーマンスに対処する必要があります。パフォーマンス要件を把握していますか? 現在達成しているパフォーマンスを測定できますか? ギャップはありますか?もしあれば、それを数値化できますか? この段階で、特定の方法で設計を変更した場合の影響を測定するための制御された実験を行うなどして、原因を分析するためにドリルダウンを開始できます。特定の構造が非効率的かどうかを推測することはこのプロセスの一部ですが、答えを得る唯一の方法は測定を行うことです。

于 2012-11-28T11:57:34.233 に答える