【发布时间】:2015-08-13 20:56:35
【问题描述】:
我有一个 XML 格式的大文件 (3GB+)。目前,我在我的 Java 代码中读取 XML,对其进行解析并存储在 HashMap 中,然后将 HashMap 用作查找。 对于此代码的每次运行,此过程在 1000 个不同的 JVM 中完成大约 1000 次。 1000 个不同的 JVM 对输入数据的 1000 个分区进行操作,因此这个过程必须发生 1000 次。
我想知道作为一次性活动,如果我序列化 HashMap 然后存储输出。然后在 java 程序中反序列化 HashMap 并避免解析 XML 文件 1000 次。
这会大大加快代码速度吗?还是序列化开销会抵消任何收益?
编辑: 1. 1000 个不同的 JVM 对输入数据的 1000 个分区进行操作,因此这个过程必须发生 1000 次。
【问题讨论】:
-
你为什么一遍又一遍地阅读它?阅读一遍,保持
HashMap可用。 -
或者批量读取一次,然后放入数据库之类的合理的东西中。
-
数据的形状是什么?是流式传输还是您真的需要查看整个文件才能开始计算?
-
你为什么使用 1000 个 JVM,而不是单个 JVM 中的 1000 个线程?还是针对机器上的 CPU 数量优化的线程池?
标签: java xml serialization xml-parsing