小编Tsc*_*ger的帖子

反序列化后Hashmap变慢 - 为什么?

我有一个非常大的Hashmap(~250MB).创建它大约需要50-55秒,所以我决定将其序列化并将其保存到文件中.从文件中读取大约需要16-17秒.

唯一的问题是查找似乎这样慢.我一直认为hashmap是从文件读入内存的,因此与我自己创建hashmap的情况相比,性能应该是相同的,对吧?这是我用来将hashmap读入文件的代码:

File file = new File("omaha.ser");
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(new BufferedInputStream(f));
omahaMap = (HashMap<Long, Integer>) s.readObject();
s.close();
Run Code Online (Sandbox Code Playgroud)

当我自己创建hashmap时,3亿次查找大约需要3.1秒,而当我从文件中读取相同的hashmap时大约需要8.5秒.有人知道为什么吗?我忽略了一些明显的东西吗

编辑:

我通过使用System.nanotime()获取时间来"测量"时间,因此没有使用适当的基准测试方法.这是代码:

public class HandEvaluationTest
{
    public static void Test()
    {

        HandEvaluation.populate5Card();
        HandEvaluation.populate9CardOmaha();


        Card[] player1cards = {new Card("4s"), new Card("2s"), new Card("8h"), new Card("4d")};
        Card[] player2cards = {new Card("As"), new Card("9s"), new Card("6c"), new Card("2h")};
        Card[] player3cards = {new Card("9h"), new Card("7h"), new Card("Kc"), new Card("Kh")};
        Card[] table = {new Card("2d"), new Card("2c"), new Card("3c"), …
Run Code Online (Sandbox Code Playgroud)

java hashmap deserialization

5
推荐指数
1
解决办法
383
查看次数

标签 统计

deserialization ×1

hashmap ×1

java ×1