我最近一直在运行一些基准测试,试图为 C++ 和 Java 找到“最好的”序列化框架。对我来说构成“最佳”的因素是反序列化/序列化的速度以及序列化对象的最终大小。
如果我查看 Java 中各种框架的结果,我发现生成的 byte[] 通常小于内存中的对象大小。甚至内置 Java 序列化也是如此。然后,如果您查看其他一些产品(protobuf 等),则大小会减少得更多。
当我查看有关 C++ 大小(boost、protobuf)的东西时,我感到非常惊讶,结果对象通常不小于(在某些情况下大于)原始对象。
我在这里错过了什么吗?为什么我在 Java 中免费获得大量“压缩”,而在 C++ 中却没有?
nb 用于测量 Java 中对象的大小,我正在使用 Instrumentation http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/Instrumentation.html