2
我需要在內存中緩存大量的map
。每個map
將與用於查找的key
相關聯。我打算爲此使用POCO
的緩存框架。C++:緩存JSON而不是對象減少內存消耗?
如果我將每個map
序列化爲JSON
,是否會減少每個緩存項目的內存佔用量?如果是這樣,我可以期待什麼樣的節能 - 10%,50%?
您會推薦緩存簡單對象還是JSON
?
我需要在內存中緩存大量的map
。每個map
將與用於查找的key
相關聯。我打算爲此使用POCO
的緩存框架。C++:緩存JSON而不是對象減少內存消耗?
如果我將每個map
序列化爲JSON
,是否會減少每個緩存項目的內存佔用量?如果是這樣,我可以期待什麼樣的節能 - 10%,50%?
您會推薦緩存簡單對象還是JSON
?
一般來說,是的,緩存爲JSON會比C++對象更高效,更明智地存儲。
唯一的例外是,如果你有一堆對象,例如int字段,並將其轉換爲JSON表示(JSON「object」或JSON「array」)作爲字符值。 JSON字符表示不能像二進制字段那樣緊湊,所有這些都在單個對象中一起進行縮放。
但是,如果你正在談論包含許多指向其他對象的指針的對象(即,概念性JSON的典型「對象」表示),那麼實際的JSON可能會更緊湊2倍到8倍之間。
謝謝。在我的情況下,
如果你正在從一個「地圖」對象轉換,那麼這個對象的開銷就會很高 - 當每件事情都被考慮時,每個條目的可能數量爲30-100字節。取決於你如何定義分配器的公平程度 - 默認分配器可能會在高端。 – 2012-02-23 02:51:17