gpt4 book ai didi

java - 序列化——C++和Java的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:25 24 4
gpt4 key购买 nike

我最近一直在运行一些基准测试,试图找到适用于 C++ 和 Java 的“最佳”序列化框架。对我来说“最好”的因素是反序列化的速度以及序列化对象的最终大小。

如果我查看 Java 中各种框架的结果,我发现生成的 byte[] 通常小于内存中的对象大小。这甚至是内置 Java 序列化的情况。如果您随后查看其他一些产品(protobuf 等),大小会减少更多。

当我查看 C++ 大小(boost、protobuf)时,我感到非常惊讶,结果对象通常不小于(在某些情况下更大)原始对象。

我是不是漏掉了什么?为什么我在 Java 中免费获得了相当数量的“压缩”,但在 C++ 中却没有?

n.b 用于测量 Java 中对象的大小,我正在使用 Instrumentation http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html

最佳答案

您是否比较了数据的绝对大小?我会说 Java 有更多的开销,所以如果您将数据“压缩”到序列化缓冲区中,开销会减少很多。在 C/C++ 中,您几乎拥有物理数据大小所需的最低限度,因此没有太多的压缩空间。事实上,您必须添加额外的信息来反序列化它,这甚至可能导致增长。

关于java - 序列化——C++和Java的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16729102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com