【发布时间】:2017-07-19 14:04:47
【问题描述】:
我最近看到这篇文章 (Loading pokemon from xml file) 让我思考,是在外部文档(例如 xml 文件)中引用大量对象还是使用集合(例如列表)更好或字典)更好的表现?
我没有很长时间编程,所以如果这是一个“常识”类型的问题,我很抱歉,但我主要关注的是性能方面
如何访问内存?例如,与 xml 文件在硬盘驱动器上使用更多内存相比,这些集合是否需要更多使用 RAM?
访问随机对象时哪个过程更快? IE。包含 100、1000 甚至 10,000 个对象的列表?我的猜测是访问内部列表或字典会比读取外部 xml 文件并尝试拉入对象信息更快。
是否认为其中一个选项比另一个选项更好?只是偏好吗? (我意识到这不一定是性能问题,但我相信它仍然值得了解)。
使用我在帖子中找到的示例(口袋妖怪),我的第一个想法是使集合成为内部的 2 件事情中的一件。
我将创建一个所有 pokemon 派生自的基类,然后创建具有特定 pokemon 种类的子类作为个人信息(尽管我相信有数百个 pokemon,所以这可能不切实际)。
我将创建一个名为 pokemon 的类,其中包含每个 pokemon 将具有的多个属性(例如名称、物种等...)
从这里我可能会制作一个列表或字典,以便在需要时引用每个口袋妖怪。
作为替代方案,我可能会像问题的发布者那样做,即创建一个包含 pokemon 列表的 xml 文件,然后在需要时调用该文件。
我包含此信息是为了让上述 3 个问题具有某种上下文,但同样,我主要关心的是当有大量对象时内部集合与外部文档的性能。
注意:外部文档不一定必须是 xml,但这是我发现的帖子中使用的。
【问题讨论】:
-
如果您想知道哪个更快,请同时尝试,然后自己找出答案。
-
我没有在做一个会使用它的特定项目,但我只是想看看是否有人使用大量对象完成了一个项目,是否已经经历了思考过程,并且他们想出了什么。如果没有必要,我宁愿不重新发明轮子。
-
所以你实际上根本不需要知道?如果是这样,为什么要问这个问题?如果你需要知道,写一个简单的测试并找出答案。
-
这又取决于您的环境和业务情况。是否所有对象都适合到您的记忆中?如果你没有足够的内存,性能问题就无关紧要了。
-
这个问题的提出更多是出于好奇而不是“需要”。尽管我加入 SO 的时间不长,所以如果在其他地方更好地询问(或不询问)这个问题,那么我会非常乐意将其删除。当然,我将自己解决问题的某些方面(查看可以访问列表的速度),但就内存的存储方式或被认为是良好的编程实践而言(如果有偏好的话)我缺乏这方面的知识。
标签: c# xml performance collections