XSL变量内存使用情况

时间:2012-11-28 05:25:17

标签: variables xslt memory browser

我是XSLT的新手。我有一个XML文档,我使用XSL将XML转换为HTML表格.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=======

3 个答案:

答案 0 :(得分:0)

我认为XSLT变量非常便宜。一般来说,除非你真的遇到问题,否则我不会担心性能。您可能希望生成这些100000节点文档中的一个,以查看性能是否可接受。

答案 1 :(得分:0)

这绝对是特定于实现的,它可能会因浏览器而异。

但是,在for-each循环的每次迭代之后,不再需要此上下文中的变量,因此任何自我尊重的XSLT处理器都不需要在内存中具有100000个值,每次迭代后都可以释放内存。 / p>

答案 2 :(得分:0)

您需要自上而下而非自下而上的性能。你知道你的性能要求吗?你能衡量一下你目前的表现吗?是否存在差距,如果有,您能否量化它?在这个阶段,您可以开始向下钻取以分析原因,例如通过控制实验来测量以特定方式改变设计的效果。关于特定结构是否低效的推测是这个过程的一部分,但得到答案的唯一方法是进行测量。