【问题标题】:Optimize loading speed of xstream优化xstream的加载速度
【发布时间】:2010-09-02 02:54:18
【问题描述】:

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

【问题讨论】:

    标签: java xstream


    【解决方案1】:

    避免使用缓慢的 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-30
      • 2015-12-31
      • 1970-01-01
      • 2011-08-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多