代码之家  ›  专栏  ›  技术社区  ›  Morrowless

性能-NSValue与容器对象中的结构

  •  3
  • Morrowless  · 技术社区  · 14 年前

    在需要将所有数据成员保存到 NSDictionary ,放置结构(自定义类型,甚至标量,即 CGPoint )用我自己的包装纸(不是 NSValue ,所以我可以避免每次获取或设置成员时对其进行编码/解码的开销?

    对于大型结构(16个浮点数),节省了大量的内存。但即使是 临界点 我将节省4字节的复制时间加上编码/解码时间。

    3 回复  |  直到 10 年前
        1
  •  3
  •   Georg Fritzsche    14 年前

    为什么不根据你的具体情况来衡量呢?这是唯一真正可靠的发现方法。

    如果这两个选项都不够,您可以研究 CFDictionary 通过设置 value callbacks 相应地或采取C++ std::map / std::tr1::unordered_map 一个旋转(如果你不介意用C++来混合)。

        2
  •  3
  •   Peter Hosey    14 年前

    实际上,您可能会更进一步:完全放弃该结构,并将其作为模型对象。然后,您可以将逻辑(例如,计算属性)集成到其中,并使其能够以任何相关格式对自身进行编码和解码,以及将其放入集合中。

        3
  •  1
  •   jer    14 年前

    嗯,nsdictionary类型无论如何都需要对象作为其成员,所以不能在nsdictionary中存储结构。你必须将它包装在一个容器对象中。