Saxon XQueryCompiler 的优化

Optimization of Saxon XQueryCompiler

我发现 saxon 9.9.1-4 中 XQueryCompiler 的行为非常奇怪。当我 运行 第一个 XQuery 时,无论 XQuery 的复杂性如何,编译都会花费很多时间(400 毫秒)- 例如测试 math:pi()。但是当我 "initialise" XQuery 编译器通过编译某些东西(例如 compiler.compile("1") )时,其他查询的编译速度很快 - 400 毫秒的等待不再存在。

真的很奇怪,为什么会这样?如果这种行为是有意的,为什么工厂方法 Processor.newXQueryCompiler() 中没有这样的初始化?

我已经测试了快速编译标志,它似乎对这 400 毫秒的延迟没有任何影响。

我的猜测是您衡量的是加载 Java VM 和 Saxon 软件的成本,而不是编译实际查询的成本。在加载所有 类 之前 Java 到 "warm up" 可能需要相当长的时间,commonly-used 方法是 JIT-compiled,等等。如果您将同一个查询编译 20 次,您可以很容易地观察到这种效果,随着 Java 对其进行优化,所花费的时间会慢慢减少。