2012-02-23 107 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