1

カスタム コンパレータと多数のエントリがTreeMap<List<String>, Integer>あります (この時点では 700k ですが、それ以上になる可能性があります)。List インスタンスは通常短い (1 ~ 3 エントリ)。

現在、標準のシリアル化を使用すると約 2 分かかりますが、以下のようなカスタム実装にはまだ 1 分以上かかります。

@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 に答える