在编写XHTML元素时,XSLT的性能更高
<xsl:element name="div">
<xsl:attribute name="class">someclass</xsl:attribute>
</xsl:element>
或者只是把它写出来
<div class="someclass"></div>
处理速度/性能等方面是否有任何区别?
答案 0 :(得分:3)
我怀疑XSLT编译器可能会在内部将一个转换为另一个,当然,至少some of them会这样做:
现在可以编译文字结果元素 内部进入xsl:element和 xsl:属性说明。这个 导致跟踪输出的变化: 每个属性现在都被追踪为 单独的指示。
更一般地说,这类似于微观优化,不太可能带来改进,超过选择更易读的版本的好处。
答案 1 :(得分:1)
在任何XSL转换器旁边都会将两个变体映射到相同的内部表示中。刚用saxonb-xslt测试了一百万次调用9:绝对没有区别。
答案 2 :(得分:1)
可读性仅在开发周期中很重要。使用XSL动态显示的高负载站点将希望减少看似不可能的小时间。
要测试编译器中哪个更快,请创建两个重复相同事物10,000次的XSL,然后在前端对基准测试处理速度进行基准测试。然后将时差除以10,000,就可以得到真正的速度差异。
根据XSL的大小也会产生影响。 xsl:element中完全设计的页面将比直接HTML大得多。但是,如果在该方法中使用XSL,则应重新考虑将特定数据分解为XML / XSL包含,并在页面模板的其余部分进行其他操作。
答案 3 :(得分:0)
写出元素是否具有更好的性能取决于XSLT处理器。处理器可以优化第一个以获得与第二个相同的性能。实现了一个XSLT处理器之后,我建议将元素写出来而不是使用xsl:element可能要么快,要么更快,而且不太可能慢。
答案 4 :(得分:0)
你不会从这种重构中获得任何合理的性能提升(你能感受到微秒的差异)吗?
但是,我强烈建议使用最易读的版本:
<div class="someclass"/>
即使在元素具有动态计算其值的属性的情况下,也总是尝试写:
<someElement attr="{someExpression}"/>
而不是:
<someElement>
<xsl:attribute name="attr">
<xsl:value-of select="someExpression"/>
</xsl:attribute>
</someElement>