gpt4 book ai didi

.net - 基准 XSLT 性能

转载 作者:行者123 更新时间:2023-12-04 00:09:43 26 4
gpt4 key购买 nike

我正在尝试对 XSLT 的两个版本进行基准测试。目前我使用 Visual Studio 进行调试,因为从 .NET 组件调用的 xml 转换。 VS 2010 是我用于开发的 IDE。

我得到的唯一线索来自输出窗口(下面是一个例子):

Stylesheet load time: 656.2 ms
Stylesheet JIT time: 11.18 ms
Stylesheet execution time: 177.8 ms

我相信我只需要为“样式表执行时间”烦恼,但不确定这些值是否确实反射(reflect)了 XSL 的实际能力,因为它似乎在每次运行中不断变化。

我想知道是否有可靠的方法来对 XSL 进行基准测试。分享任何使用 .NET 运行时对 XSL 进行基准测试的实践经验都会有所帮助。

最佳答案

这个问题之前在 stackoverflow 中被问过,你可以在这里看到原始问题:How do I profile and optimize an XSLT?

以下是已接受答案的摘录:

which XSLT engine are you using? If you are using the .NET engine and Visual Studio you could use the XSLT profiler integrated into Visual Studio which is a very useful.

Other excellent profiling tools are Altova's XML Spy and Oxygen.

If you would post your XSLT it would be easier to tell you where possible bottlenecks are. In general be careful with XPath expressions such as '//', preceding::* and following::*. Some more rules and best-practices:

  1. Avoid repeated use of "//item".
  2. Don't evaluate the same node-set more than once; save it in a variable.
  3. Avoid <xsl:number> if you can. For example, by using position().
  4. Use <xsl:key>, for example to solve grouping problems.
  5. Avoid complex patterns in template rules. Instead, use within the rule.
  6. Be careful when using the preceding[-sibling] or following[-sibling] axes. This often indicates an algorithm with n-squared performance.
  7. Don't sort the same node-set more than once. If necessary, save it as a result tree fragment and access it using the node-set() extension function.
  8. To output the text value of a simple #PCDATA element, use <xsl:value-of> in preference to <xsl:apply-templates>.

(from [http://www.dpawson.co.uk/xsl/sect4/N9883.html#d15756e150][4])

Originally from : https://stackoverflow.com/users/40347/0xa3

我会确保在运行之前编译您可以调用的 XSLT,这样您就不会从每次发生的编译过程中获得混合指标。

您可以使用 XslCompiledTransform 类来确保在运行之前编译 XSLT。非常重要的是,您不要处理它并以其他方式重用转换,每次您再次创建对象时,它都会重新编译并随机花费时间来完成它。

这里有一篇有趣的文章:http://www.windowsdevcenter.com/pub/a/dotnet/2003/07/14/xsltperf.html在 .NET 中称为 XSLT 性能

它继续将 .Net 中的 XSLT 转换基准测试到其他 xslt 引擎。

我使用 XSLT 的经验是,除非将自定义函数添加到转换中,否则速度非常快。调用性能不佳的自定义代码通常中小型工作表应该运行得非常快,特别是你没有很多导入和函数调用。

如果您真的担心,可以阅读 MSDN Enterprise Patterns and Practices 中的一篇精彩文章,其中有一节介绍了 XML 和 XSLT 转换的性能。

文章在这里:http://msdn.microsoft.com/en-us/library/ff649152.aspx

我要说的部分在这里:http://msdn.microsoft.com/en-us/library/ff647804.aspx

Microsoft 发表了一篇关于 Benchmarking XSLT 的文章,读起来很有趣。 http://blogs.msdn.com/b/antosha/archive/2006/07/24/xslcompiledtransform-performance-beating-msxml-4-0.aspx

还有一种方法可以将样式表预编译到代码中,这样 xslt 转换仅被加载而不被解析。

您可以在此处找到相关信息:(在 .NET 中使用预编译的 XSLT)http://my-tech-talk.blogspot.co.uk/2009/03/using-precompiled-xslt-in-net.html

关于.net - 基准 XSLT 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com