我发现 saxon 9.9.1-4 中 XQueryCompiler 的行为非常奇怪。当我第一次运行 XQuery 时,无论 XQuery 复杂性如何,编译都会花费大量时间(400 毫秒)——例如 math:pi() 进行测试。但是,当我通过编译某些内容(例如,compiler.compile("1"))来“初始化”XQuery 编译器时,其他查询的编译速度很快 - 400 毫秒的等待不再存在。
确实很奇怪,为什么会这样呢?如果这种行为是有意为之,为什么工厂方法 Processor.newXQueryCompiler() 中没有这样的初始化?
我已经测试了快速编译标志,它似乎对这 400 毫秒的延迟没有任何影响。
最佳答案
我的猜测是,您正在测量加载 Java VM 和 Saxon 软件的成本,而不是编译实际查询的成本。在加载所有类、对常用方法进行 JIT 编译等之前,Java 可能需要相当长的时间来“预热”。如果您编译相同的查询 20 次,您可以很容易地观察到这种效果,随着 Java 的优化,所花费的时间会慢慢缩短。
关于java - Saxon XQuery编译器的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996314/