如何加快 XSL 转换?

Posted

技术标签:

【中文标题】如何加快 XSL 转换?【英文标题】:How to speed up XSL Transformations? 【发布时间】:2010-07-30 21:10:06 【问题描述】:

有什么方法可以加快 XSL 转换?我正在使用 XSLCompiledTransform 类来转换我的 XML 文件。我的 XML 文件包含大约 3900 条记录,每条记录中大约有 100 个字段。此转换文件的大小约为 10 KB。

大约需要 25 - 30 分钟才能看到转换后的文件。

我不确定这是否与元素数量、我电脑上的内存容量以及我使用的是 32 位操作系统有关。

有没有人知道可以加快这一转变过程的任何技术?

【问题讨论】:

这个问题太笼统了。你在改造什么?如何?你做过剖析吗?您的代码中的瓶颈是什么? 发布 xslt - 您所写的内容可能效率低下。我知道很多程序员不习惯 xslt 需要的声明式/模板驱动风格。 如果您即使在 Assembler 中实现 O(N^3) 算法,它仍然比 Basic 中的 O(log(N)) 实现慢数千倍。所以,在很多情况下不是语言,而是作者的脑力:)。如果你不敢向我们展示你的代码,我猜它即使在 Assembler 中也不会运行得很快 :) 查看相关问题的答案:> How do I profile and optimize an XSLT? 【参考方案1】:

由于您没有向我们展示您的任何代码,我只能给您一个非常一般的建议:尝试另一个 XSLT 处理器。 xsltproc 非常快,看http://xmlsoft.org/XSLT/xsltproc2.html,Windows 二进制文件是here。

【讨论】:

这就像说有人使用 php 并发现他的应用程序太慢以至于他可能会改用 ASP.NET。我认为首先要知道瓶颈是否是.NET XSLT 引擎。缓慢可能是由于编写不佳的 XSLT 或其他错过的优化造成的。 @MainMa:是的,机会很高。但是尝试不同的 xslt 处理器可能值得尝试,因为尝试这通常可以通过非常小的努力来实现,根据我的经验,XSLT 非常便携。你的 PHP -> ASP.NET 比较是没有意义的,那将意味着编程语言的彻底改变,这里不是这种情况。

以上是关于如何加快 XSL 转换?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决从字符串加载 XSL 的转换中包含的 XSL?

如何将xsl文件转换为sef文件

C# - 是不是可以(以及如何)使用 SgmlReader 执行 XSL 转换

如何将带有嵌入图像的 XHTML+CSS 转换为 XSL-FO?

如何使用 XSL 在 XML 转换中查找随机元素

当输入 XML 和转换 XSL 是字符串时,如何使用 XslCompiledTransform。如何将转换结果作为字符串获取?