- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对 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:
- Avoid repeated use of
"//item"
.- Don't evaluate the same node-set more than once; save it in a variable.
- Avoid
<xsl:number>
if you can. For example, by using position().- Use
<xsl:key>
, for example to solve grouping problems.- Avoid complex patterns in template rules. Instead, use within the rule.
- Be careful when using the
preceding[-sibling]
orfollowing[-sibling]
axes. This often indicates an algorithm with n-squared performance.- 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.- 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/
我有一个 XSLT 样式表,如下所示: 我想使用第二个 XSLT 样式表来转换此样式表,以删除与 XQHead
我们有一个大型 xslt,可以呈现整个商店区域,包括产品、制造商,并根据价格和类别进行过滤。我使用 sitecore 作为 CMS,但遇到缓存问题。我有大约 9000 个项目,有些页面需要长达 20
我想根据条件的结果应用具有不同参数的模板。像这样: Attribute no. 1
我有一些看起来像这样的 XML Foo Details Bar Details Baz Details Foo Blah Bar BlahBlah Baz BlahBlahBl
我试图从这种输入出发: a b c d e f g ... 使用 XSLT 的 HTML 输出: one two a e b f
我想知道如何在 xslt 中找到特定节点的第一个子节点名称。 我有一个 xml: some text 我可以使用 body/
是否可以在 XSLT 中获取上个月的最后一天?我找到了这个函数:http://www.xsltfunctions.com/xsl/functx_last-day-of-month.html但我不确定如
具有特定节点的匹配元素存在问题。 xml: description of profile PhoneKeyPad S
我将一堆键值对作为参数传递给 XSL(日期 ->“1 月 20 日”,作者 ->“Dominic Rodger”,...)。 我正在解析的一些 XML 中引用了这些 - XML 如下所示: 目前,除
我找不到这个问题的确切答案,所以我希望有人能在这里帮助我。 我有一个字符串,我想在最后一个 '.' 之后获取子字符串。我正在使用 xslt 1.0。 这是怎么做的?这是我的代码。
我在尝试找出 xslt 上的 var 范围时遇到问题。我实际上想要做的是忽略具有重复“旅游代码”的“旅行”标签。 示例 XML: X1 Budapest X1 Budapest X
我有一些数据在 xslt 的 for-each 循环中输出。我对列表进行了分页,但没有对排序选择器进行分页。 用户应该能够对 2 个值(创建的数据和每个项目的数字字段)进行排序。默认的排序方法是创建日
我有一个奇怪的要求。 我在 xslt 中有一个包含月份的变量,带有它们的 id (1-12) 问题是我需要全部显示它们,但从一月(1)以外的月份开始。 目前我有以下 JAN
如何在 xslt 转换中模块化一组重复的输出?例如,我有如下内容(伪代码)。 并
我得到一个像这样的字符串。 13091711111100222222003333330044444400 字符串的模式是这样的 13 - 09 - 17 - 11111 - 100 - 22222 -
我是 XSLT 的新手,有一个一般性问题。为了区分具有不同属性的两个元素,最好(也是为了性能)使用 和 而不是 在一个模板中。据我所知,这就是 XSLT 中应该“思考”的方式。但在我看来,这有一个缺点
如何从“19650512-0065”到“196505120065”这样的字符串中删除连字符 使用这个模板:传递 theID =
是否有任何功能可以在左侧填充零? 我正在尝试做的要求是: 我们不知道即将到来的输入字符串长度。 如果小于 20,我们必须在左侧填充零。 如果输入字符串长度为 10,那么我们必须在左侧填充 10 个零。
身份模板如下所示: 是否选择多于 ,或者身份模板可能是这样的? 当我执行以下操作时,究竟选择了什么? 最佳答案
我正在尝试使用 XML 信息和 XSLT 模板创建超链接。这是 XML 源代码。 Among individual stocks, the top percentage gainers in the
我是一名优秀的程序员,十分优秀!