2012-02-23 9 views
2

メモリに多数のmapをキャッシュする必要があります。それぞれmapは、参照用にkeyに関連付けられます。私はこのためにPOCOのキャッシュフレームワークを使う予定です。C++:オブジェクトの代わりにJSONをキャッシュするとメモリ消費量が減少しますか?

mapをそれぞれJSONにシリアル化すると、キャッシュされた各アイテムのメモリフットプリントが削減されますか?もしそうなら、どのような節約が期待できますか?10%、50%?

プレーンオブジェクトやJSONをキャッシュすることをお勧めしますか?

答えて

2

一般的に、JSONとしてキャッシングすると、C + +オブジェクトよりもストレージ効率が向上します。

唯一の例外は、たとえばintフィールドの束を持つオブジェクトがあり、それを文字値としてJSON表現(JSON "object"またはJSON "array")に変換した場合です。 JSON文字表現は、バイナリフィールドほどコンパクトではありませんでした。すべてが単一のオブジェクトにまとめられています。

しかし、他のオブジェクトへのポインタが多いオブジェクト(概念的なJSONの典型的な「オブジェクト」表現)を話すなら、実際のJSONはおそらく2倍から8倍コンパクトです。

+0

ありがとうございました。私の場合、は比較的単純なです。シリアライゼーションはここで意味がありますか? – Continuation

+0

"マップ"オブジェクトから変換する場合、そのオーバーヘッドは非常に高くなります。おそらくすべてが考慮されていると、1エントリあたり30-100バイトのオーダーです。あなたがアロケータをどのように定義するかについてかなりの程度に依存します - デフォルトのアロケータはおそらくハイエンドにあるでしょう。 –

関連する問題