我最近进行了一些基准测试,试图找到C++和Java的“最佳”序列化框架。 对我来说,“最佳”的因素是反序列化/序列化的速度以及序列化对象的结果大小。
如果我查看Java中各种框架的结果,我会发现生成的byte[]通常比内存中的对象大小要小。即使使用内置的Java序列化也是如此。如果您再看一些其他提供(protobuf等)的东西,大小会进一步减小。
当我在C ++方面看事情时(boost,protobuf),我很惊讶得到的结果对象通常不比原始对象更小(有时甚至更大)。
我错过了什么吗?为什么我在Java中免费获得了相当多的“压缩”,但在C ++中没有呢?
PS:为了测量Java对象的大小,我使用Instrumentationhttp://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html
如果我查看Java中各种框架的结果,我会发现生成的byte[]通常比内存中的对象大小要小。即使使用内置的Java序列化也是如此。如果您再看一些其他提供(protobuf等)的东西,大小会进一步减小。
当我在C ++方面看事情时(boost,protobuf),我很惊讶得到的结果对象通常不比原始对象更小(有时甚至更大)。
我错过了什么吗?为什么我在Java中免费获得了相当多的“压缩”,但在C ++中没有呢?
PS:为了测量Java对象的大小,我使用Instrumentationhttp://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html