当我尝试从 XML 文件执行加载时,我觉得 xstream 加载速度不符合我的要求。为了 一个包含 10k++ 个条目的“数据库”,这将需要几分钟时间。
下面是我用来序列化的整个数据结构。列表的大小(符号和代码)将是 大约 10k++ 个条目。
有什么方法可以让我尝试一下,看看它是否会加快我的加载时间?仍然可以加载回来 以前保存的文件也很重要。
以下是用于反序列化的代码。谢谢。
@SuppressWarnings("unchecked")
public static <A> A fromXML(Class c, File file) {
XStream xStream = new XStream(new DomDriver("UTF-8"));
InputStream inputStream = null;
try {
inputStream = new java.io.FileInputStream(file);
Object object = xStream.fromXML(inputStream);
if (c.isInstance(object)) {
return (A)object;
}
}
catch (Exception exp) {
log.error(null, exp);
}
finally {
if (false == close(inputStream)) {
return null;
}
inputStream = null;
}
return null;
}
最佳答案
避免使用速度较慢的 DomDriver。
@SuppressWarnings("unchecked")
public static <A> A fromXML(Class c, File file) {
// Don't ever try to use DomDriver. They are VERY slow.
XStream xStream = new XStream();
InputStream inputStream = null;
Reader reader = null;
try {
inputStream = new java.io.FileInputStream(file);
reader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));
Object object = xStream.fromXML(reader);
if (c.isInstance(object)) {
return (A)object;
}
}
catch (Exception exp) {
log.error(null, exp);
}
finally {
if (false == close(reader)) {
return null;
}
if (false == close(inputStream)) {
return null;
}
reader = null;
inputStream = null;
}
return null;
}
关于java - 优化 xstream 加载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623546/