非常简单的问题,在内存中存储100 KB - 2 MB对象的方法是什么?对象由3个双打和2个字符串组成(大多数都在5个字符长之间)。使用struct而不是class会更好吗?
编辑:我不知道为什么我说双,它是漂浮..:S答案 0 :(得分:3)
处理大量对象时需要考虑两个主要问题。
第一个问题已经在Frederik Gheysels'answer中通过使用Fly权重模式得到解决,这是内存问题。
第二个问题是如何有效地添加和检索这些对象/结构(取决于您选择遵循的路径)。显然我假设你不只是创建这些对象而又不想再次检索它们;)
要回答这个问题,这实际上取决于您想要添加和访问数据的方式。从那里,您可以决定哪种数据结构最适合您的任务。例如,您可能希望以LIFO顺序处理这些对象,那么堆栈将是最有效的方式。
答案 1 :(得分:2)
是否有机会使用Flyweight pattern?
如果您的类型表示值类型,则可以使用结构。 分配和解除分配的结构更便宜。考虑到设计指南,您可以在以下情况下使用结构:
答案 2 :(得分:1)
我不知道你在做什么,但这些经验法则怎么样?
如果您必须将点存储在某种类型的集合中,那么将它们设为类以节省用于存储的装箱结构的开销。
如果您只是将这些点作为输入数据用于另一个对象进行处理,例如作为网格中的点进行处理,然后更喜欢一个数组来保存Collection类的开销。
如果你将点存储在一个数组中,那么只需要构造它们,因为这比制作它们更有效。
答案 3 :(得分:0)
我怀疑结构和类之间是否存在差异,当然不是在C ++中,它们本质上是相同的。在现代桌面系统上,您建议的2M对象大小并不大。