我在一个名为“V6BasicCar”的自己的类的对象中转换xml,我遇到的问题是如果启用Java缓存(在Java控制面板中):
每个转换需要大约3-4秒,但如果禁用缓存,则需要几毫秒。我不知道为什么会发生这种情况,我唯一的猜测是Java每次转换都会缓存ByteArrayStream,这会让它变慢,但我还没有想出如何处理这个问题。有什么替代ByteArray Stream会更快?
谢谢。
代码:
{
..
ByteArrayOutputStream out = new ByteArrayOutputStream();
//1. transform xml
transform(getSourceXml(_intype), out);
//2. convert to bean
XsdConverter v6BasicCarXsdConverter = new XsdConverter(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());
}