我正在调试和修复一个复杂的应用程序,该应用程序与一个巨大的 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/