1

我有TreeMap<List<String>, Integer>一个自定义比较器和很多条目(此时为 700k,但可能更多)。List 实例通常很短(1-3 个条目)。

现在使用标准序列化大约需要 2 分钟时间,下面的自定义实现仍然需要一分钟以上。

@Override
public void readExternal(ObjectInput in) throws IOException,
        ClassNotFoundException {
    frequencies.clear(); //frequencies is the TreeMap
    int entrySize = in.readInt();
    for(int i = 0; i < entrySize; ++i) {
        int phraseLength =  in.readInt();
        List<String> phrase = new ArrayList<>(phraseLength);
        for(int j = 0; j < phraseLength; ++j) {
            phrase.add((String)in.readObject());
        }
        frequencies.put(phrase, in.readInt());
    }
}

我怎样才能让它更快?

4

1 回答 1

-2

我在这个库上取得了很大的成功:

http://tree.phi-sci.com/

http://tree.phi-sci.com/tree.pdf

它在 c++ 中,但我已经能够使用它来进行非常快速的树处理。

具体来说,我们在 300 毫秒内处理了 500,000 条记录(多次通过、操作和计算)。

于 2012-11-29T13:39:30.723 回答