Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 序列化-C和x2B之间的差异+;和爪哇 我最近一直在运行一些基准,试图找到C++的最佳串行化框架,也可以在爪哇找到。对我来说,构成“最佳”的因素有 反序列化/序列化的速度以及序列化对象的结果大小_Java_C++_Serialization - Fatal编程技术网

Java 序列化-C和x2B之间的差异+;和爪哇 我最近一直在运行一些基准,试图找到C++的最佳串行化框架,也可以在爪哇找到。对我来说,构成“最佳”的因素有 反序列化/序列化的速度以及序列化对象的结果大小

Java 序列化-C和x2B之间的差异+;和爪哇 我最近一直在运行一些基准,试图找到C++的最佳串行化框架,也可以在爪哇找到。对我来说,构成“最佳”的因素有 反序列化/序列化的速度以及序列化对象的结果大小,java,c++,serialization,Java,C++,Serialization,如果我查看Java中各种框架的结果,我会发现结果字节[]通常小于内存中的对象大小。甚至内置Java序列化也是如此。如果你再看看其他的一些产品(protobuf等),其尺寸会下降得更多 当我查看C++大小(Boost,OrthBufff)上的对象时,结果对象通常不比原始对象小(而且在某些情况下更大)。p> 我是不是遗漏了什么?为什么我在java中免费得到相当数量的“压缩”,而不是C++? n、 b在Java中,为了测量对象的大小,我使用了仪器您是否比较了数据的绝对大小?我想说Java有更多的开销,

如果我查看Java中各种框架的结果,我会发现结果字节[]通常小于内存中的对象大小。甚至内置Java序列化也是如此。如果你再看看其他的一些产品(protobuf等),其尺寸会下降得更多

当我查看C++大小(Boost,OrthBufff)上的对象时,结果对象通常不比原始对象小(而且在某些情况下更大)。p> 我是不是遗漏了什么?为什么我在java中免费得到相当数量的“压缩”,而不是C++?


n、 b在Java中,为了测量对象的大小,我使用了仪器

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

由于数据成员之间的偏移位,可以观察到对象大小大于实际数据大小

序列化对象时,这些偏移位将被丢弃,因此,序列化对象内存更小


因为java是一个托管环境,它将需要更多这样的偏移数据来控制内存和所有权,因此,它们的压缩率更高。

我更新了这篇文章,展示了我如何在java中测量对象大小。你的意思是,java中的序列化不是更好的,它是C++中的对象表示在C++中更好的事实吗?@ Im理查科尔,是的,这就是我的意思。您可以将searialized对象转储为字符串,然后比较结果以了解实际情况,因为这只是我的假设。long getObjectSize(object objectToSize)返回特定于实现的指定对象消耗的存储量近似值。结果可能包括对象的部分或全部开销,因此有助于在实现内进行比较,而不是在实现之间进行比较。在JVM的单个调用过程中,估计值可能会发生变化。