C++:缓存 JSON 而不是对象会减少内存消耗吗?
我需要在内存中缓存大量map
。每个map
将与一个用于查找的key
相关联。我计划为此使用 POCO 的缓存框架。
如果我将每个 map
序列化为 JSON
,是否会减少每个缓存项的内存占用?如果是的话,我可以期待什么样的节省——10%、50%?
您会建议缓存普通对象还是 JSON
吗?
I need to cache a large number of map
in memory. Each map
will be associated with a key
for lookup. I'm planning to use POCO
's cache framework for this.
If I serialized each map
into say JSON
, would that reduce the memory footprint of each cached item? If it does, what kind of saving can I expect - 10%, 50%?
Would you recommend caching plain objects or JSON
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,是的,缓存为 JSON 会比 C++ 对象更高效、更存储。
唯一的例外是,如果您有一个带有一堆(例如 int)字段的对象,并且您将其转换为 JSON 表示形式(JSON“对象”或 JSON“数组”)作为字符值。 JSON 字符表示形式不可能像二进制字段那样紧凑,所有字段都压缩在一个对象中。
但如果您谈论的是包含大量指向其他对象的指针的对象(即概念性 JSON 的典型“对象”表示),那么实际的 JSON 可能会紧凑 2 倍到 8 倍。
Generally, yes, caching as JSON would be more efficient, storage-wise, than C++ objects.
The only exception would be if you had an object with a bunch of, eg, int fields and you converted that to a JSON representation (either JSON "object" or JSON "array") as character values. The JSON character representation could not be nearly as compact as the binary fields, all scrunched together in a single object.
But if you're talking objects that contain lots of pointers to other objects (ie, the typical "object" representation of conceptual JSON) then the actual JSON will be probably between 2x and 8x more compact.