0

objectstream と fileoutputstream を使用して HashMap をファイルにシリアライズしました。これは、約 1 億 5000 万のエントリを持つ非常に巨大な HashMap です。ファイルから読み返すと、読み込みに時間がかかります (~40 分)。

オブジェクトをシリアル化するために、FileOutputStream に続いて ObjectOutputStream を使用しています。次に、ObjectInputStream と FileInputStream を使用してオブジェクトを読み取ります。

シリアル化された HashMap を読み取り、ファイルからすばやくロードするための推奨される方法はありますか?

4

1 に答える 1

6

BufferedInputStream を使用すると、パフォーマンスが向上するはずです。

ObjectInputStream in = 
    new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));

もちろん、BufferedOutputStream を使用すると、シリアル化のパフォーマンスも向上します。

これらのバッファリングされたストリームを使用すると、バイトごとに読み取るのではなく、ファイル システムから大量のバイトを一度に読み取ることができます。詳細については、ドキュメントを参照してください。

于 2013-04-07T14:56:15.047 に答える