java - Saxon 有快速编译模式吗?
问题描述
我们通常会进行大量 XPath 查询,但几乎没有一个会重复。因此,每个查询都被编译、执行,然后被丢弃。
Saxon 中是否有一种模式我们应该设置告诉它构建编译后的查询以供一次性使用,然后在这种模式下使用时会更快?
谢谢 - 戴夫
解决方案
这是一个很好的问题,因为 Saxon 确实倾向于在优化查询上投入太多精力以获得尽可能快的运行时执行,而且花费 100 毫秒编译然后 1 毫秒执行结果的情况并不少见。
使用 -opt:0 关闭所有优化是唯一可用的真正选项。它通常会减少 30% 的编译时间成本(当然这是高度可变的)。
在 XSLT 方面,Saxon-EE 9.8 引入了模板规则的即时编译,因此,如果您将 DocBook 之类的大型样式表应用于小型实例文档,我们现在只编译您实际使用的模板规则。在这种情况下,这可能会产生很大的不同。
但是在 XPath 级别没有等价物。
我们一直在调查您的具体用例,我们的初步分析在这里:https ://saxonica.plan.io/issues/3843 。正如性能经常发生的那样,魔鬼在细节中,性能不佳的问题(及其解决方案)通常非常特定于特定的处理场景。
推荐阅读
- java - 我应该将我的 .properties 文件保存在 java 项目中的哪里,以便它应该在 war 文件之外。我应该遵循哪些步骤来实施
- javascript - 使用“async ... await”处理诸如“transitionend”之类的 DOM 事件 - 这会起作用吗?
- javascript - axios GET 请求有效,但无法将结果内容分配给变量
- c# - 需要“前导 '/' 以在 Razor 页面之外生成 URL”
- javascript - Vanilla JavaScript 自定义元素类型错误
- asp.net-mvc - MVC - 将 ReturnUrl 传递给控制器
- java - 完成 Do/While 后,Java 输入停止工作
- python - 如何使用子进程来回答 shell 提示?
- php - 如何在表单输入的 php 白名单中包含 Google RECAPTCHA 2
- c# - 远程服务器上的实体框架 ASP.NET WEB API