Я использую синтаксический анализатор STAX для обработки каждого текстового узла в формате xhtml. Приложение развернуто в окне Unix. Операция синтаксического анализа занимает больше времени при самом первом выполнении. Когда я запускаю второй раз, это занимает относительно меньше времени, а в последующих вызовах это занимает гораздо меньше времени, чем второй запуск, после чего результаты практически совпадают. Ниже приведен код, который я использую. Не уверен, почему существует несоответствие во времени, необходимом для синтаксического анализа одного и того же ввода. Пожалуйста, помогите.
Однократное создание XmlInputFactory (статический метод на уровне класса)
static {
if (xmlInputFactory == null) {
xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(javax.xml.stream.XMLInputFactory.IS_NAMESPACE_AWARE, false);
}
}
Код синтаксического анализа, который выполняет непоследовательно, давая разное время отклика для
тот же входной файл,
private static void parse(String xhtmlInput) throws XMLStreamException {
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream (xhtmlInput.getBytes(Charset.forName("UTF-8")));
XMLStreamReader parser = xmlInputFactory.createXMLStreamReader(arrayInputStream);
while (true) {
int currentEvent = parser.next();
if (currentEvent == XMLStreamConstants.CHARACTERS) {
// Do operation
} else if (currentEvent == XMLStreamConstants.END_DOCUMENT) {
parser.close();
break;
}
}
}