java - Saxon 有快速编译模式吗?

标签 java xpath saxon

我们通常会进行大量的 XPath 查询,但几乎没有一个重复。因此每个查询都会被编译、执行,然后被抛出。

在 Saxon 中是否有一种模式,我们应该设置告诉它构建一次性使用的编译查询,这样在这种模式下使用时会更快?

谢谢 - 戴夫

最佳答案

这是一个很好的问题,因为 Saxon 确实倾向于投入太多精力来优化查询以获得尽可能快的运行时执行,并且花费 100 毫秒编译然后 1 毫秒执行结果的情况并不罕见。

使用 -opt:0 关闭所有优化是唯一可用的选项。它通常可以减少 30% 的编译时间成本(当然,这是高度可变的)。

在 XSLT 方面,Saxon-EE 9.8 引入了模板规则的即时编译,因此,如果您将 DocBook 这样的大型样式表应用到小型实例文档,我们现在只编译您实际使用的模板规则使用。在这种情况下,这可能会产生很大的不同。

但是在 XPath 级别上没有等效的东西。

我们一直在调查您的具体用例,我们的初步分析如下:https://saxonica.plan.io/issues/3843 。正如性能方面经常发生的那样,细节决定成败,性能不佳的问题(及其解决方案)通常针对特定的处理场景。

关于java - Saxon 有快速编译模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365966/

相关文章:

java - 服务器加载静态资源太慢

php - xpath - 检查元素是否出现多次

c# - 遍历XmlNodeList,值始终相同

java - Saxon 配置上的 NoSuchMethodError

java - 如何在 Java Web 应用程序中嵌入 DocBook XSLT 转换?

Java 和 JDialog

java - Hibernate - 不使用 import.sql 的种子数据库

java - 使用 ANT 和 Eclipse 自动创建 JAR

php - 当 xpath 在 xml 中找不到命名空间时避免错误

java - 使用 scala 在 saxonica 9 EE 上进行模式感知 XSLT 转换