Я преобразую xml в объект своего собственного класса, называемого "V6BasicCar", проблема, с которой я сталкиваюсь, заключается в том, что, если я включаю кэш Java (в панели управления Java):
каждое преобразование занимает около 3-4 секунд, но если я отключаю кэширование, это займет всего миллисекунды.Я не знаю, почему это происходит, мое единственное предположение состоит в том, что Java кэширует ByteArrayStream для каждого преобразования, и это замедляет его, но я не понял, как справиться с этой проблемой.Есть ли альтернатива ByteArray Stream, которая была бы быстрее?
Спасибо.
Код:
{
..
ByteArrayOutputStream out = new ByteArrayOutputStream();
//1. transform xml
transform(getSourceXml(_intype), out);
//2. convert to bean
XsdConverter<V6BasicCar> v6BasicCarXsdConverter = new XsdConverter<V6BasicCar>(V6BasicCar.class);
/*
"getObject()" takes about 2 secs
*/
V6BasicCar newV6BasicCar = v6BasicCarXsdConverter.getObject(convert(out));
..
}
protected InputStream getSourceXml(final CsvWrapperMiddle _csvV6Car) throws IOException, JAXBException
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
/*
"getXml" takes about 2 secs
*/
xsdConverter.getXml(_csvV6Car.getExternalBean(), out);
InputStream output = convert(out);
return output;
}
protected InputStream convert(ByteArrayOutputStream out)
{
return new ByteArrayInputStream(out.toByteArray());
}