私は最近、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を使用しています。