Java反序列化速度

cel*_*cni 2 java serialization

我正在编写一个Java应用程序,其中包括需要读取字典文本文件(每行是一个单词)并将其存储在HashSet中.每次我启动应用程序时,都会再次读取同一个文件(6兆字节的unicode文件).

这似乎很昂贵,所以我决定序列化生成的HashSet并将其存储到二进制文件中.我希望我的应用程序在此之后运行得更快.相反,它变得更慢:从序列化之前的约2.5秒到约5秒.

这是预期的结果吗?我认为在类似的情况下序列化应该提高速度.

Sea*_*wen 5

这不是一个序列化机制或其他机制的问题,而是您要序列化的数据结构的问题.

您可以在文本文件中使用这些单词的一个非常有效,自然的表示形式:一个简单的列表.这很快就读了.

您已经创建了一个数据结构来存储它们是不同的:哈希表.表示哈希表需要更多内存.然而,与简单列表相比,它的好处是,查找单词的速度非常快.

但这种权衡意味着序列化也会变慢,因为哈希表的天真序列化将序列化更多数据并且更大,因此更慢.

我认为你应该坚持阅读文本文件.