gpt4 book ai didi

java - 优化 xstream 加载速度

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:01 25 4
gpt4 key购买 nike

当我尝试从 XML 文件执行加载时,我觉得 xstream 加载速度不符合我的要求。为了一个包含 10k++ 个条目的“数据库”,这将需要几分钟时间。

下面是我用来序列化的整个数据结构。列表的大小(符号和代码)将是大约 10k++ 个条目。

http://jstock.cvs.sourceforge.net/viewvc/jstock/jstock/src/org/yccheok/jstock/engine/StockCodeAndSymbolDatabase.java?revision=1.11&view=markup

有什么方法可以让我尝试一下,看看它是否会加快我的加载时间?仍然可以加载回来以前保存的文件也很重要。

以下是用于反序列化的代码。谢谢。

@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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com