Оптимизация Saxon XQueryCompiler - PullRequest
0 голосов
/ 11 июля 2019

Я обнаружил странное поведение XQueryCompiler в saxon 9.9.1-4. Когда я запускаю первый XQuery, компиляция тратит много времени (400 мс) независимо от сложности XQuery - проверено, например, math: pi (). Но когда я «инициализирую» компилятор XQuery посредством компиляции чего-либо (например, compiler.compile («1»)), тогда компиляция других запросов происходит быстро - ожидания 400 мс больше нет.

Это действительно странно, почему это происходит? Если это поведение предназначено, почему нет такой инициализации в фабричном методе Processor.newXQueryCompiler ()?

Я проверил флаг быстрой компиляции, и он, похоже, не влияет на задержку 400 мс.

1 Ответ

0 голосов
/ 12 июля 2019

Я полагаю, что вы измеряете стоимость загрузки Java VM и программного обеспечения Saxon, а не стоимость компиляции фактического запроса.Для «прогрева» Java может потребоваться некоторое время, прежде чем все классы будут загружены, обычно используемые методы компилируются JIT и так далее.Вы можете легко наблюдать этот эффект, если вы скомпилируете один и тот же запрос 20 раз, а затраченное время будет медленно улучшаться по мере оптимизации Java.

...