java - 如何快速序列化/反序列化复杂的java对象

标签 java xml performance serialization

我正在调试和修复一个复杂的应用程序,该应用程序与一个巨大的 Java 对象(~250M)一起使用。

我用另一个程序创建了这个对象。目前我使用XStream从硬盘加载和保存这个对象,但是解析它需要一分多钟的时间。 它会减慢开发过程。

JAXB 更快吗?还有其他方法来加载和保存这个巨大的东西吗?

最佳答案

在这种情况下,我会序列化数据,这将使其更小、更快。您可以外部化关键类以进一步提高速度。这是我最近做的一些测试Protobuf vs Thrift vs Java Serialization它与 kovica 建议的基准相同,但最近在较新的硬件/软件上运行。

如果您需要更快,您可以使用内存映射数据。这工作起来要困难得多,但你无法击败它的性能。如果数据已经在磁盘缓存中,那么加载 250 MB 需要几十毫秒。否则,您将受到驱动器速度的限制,例如40 MB/s 的慢速驱动器大约需要 8 秒。

我编写的使用内存映射文件的库是 Java Chronicle

关于java - 如何快速序列化/反序列化复杂的java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435491/

相关文章:

android - 将 xml 导入另一个 xml

xml - 获取原始元素表示,包括开始和结束标签

java - 需要批评者 : store objects inside arrays

python - 将列表列表与集合列表进行比较的最快方法

java - 从 JVM 的 getRuntime.exec() 运行时找不到进程

java - 为什么我在 Java/Android 中得到空 SQLite 字段的 "0.0"?

sql - 空 XML 节点导致将数据类型 varchar 转换为数字时出错

performance - 网络固有的瓶颈是什么?

java - Spark Streaming 中的 Kafka 消费者

Java并发线程错误