java - 优化 xstream 加载速度

标签 java xstream

当我尝试从 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/

相关文章:

java - 如何在 Java 中反转数组

java - 如何在 Android Studio 自己的方法中检索从 For 循环所做的值更改?

java - 使用 XstreamAlias 以外的注释通过 XStream 序列化对象

java - InvalidQueryException 未配置的 Columnfamily Spring Data Cassandra DataStax Enterprise

java - 如何从 Notepad++ 运行 JavaFX 应用程序? (仅作为 .jar 文件运行)

java - StatelessSession 比 Session 快吗?

java - 使用 xstream 生成子类从 xml 解码

java - 使用 XStream 序列化对象时添加属性

java - com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException : Duplicate field 问题

xstream - 在 Kettle 下使用 xstream 时,nodecom.thoughtworks.xstream.mapper.CannotResolveClassException