2012-02-23 98 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 2012-02-23 01:41:03

+0

如果你正在從一個「地圖」對象轉換,那麼這個對象的開銷就會很高 - 當每件事情都被考慮時,每個條目的可能數量爲30-100字節。取決於你如何定義分配器的公平程度 - 默認分配器可能會在高端。 – 2012-02-23 02:51:17