C++:缓存 JSON 而不是对象会减少内存消耗吗?

发布于 2025-01-08 10:23:08 字数 242 浏览 0 评论 0原文

我需要在内存中缓存大量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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城缀染半城烟沙 2025-01-15 10:23:08

一般来说,是的,缓存为 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文