【问题标题】:Which is better for performance: referencing external documents or internal collections?哪个对性能更好:引用外部文档或内部集合?
【发布时间】:2017-07-19 14:04:47
【问题描述】:

我最近看到这篇文章 (Loading pokemon from xml file) 让我思考,是在外部文档(例如 xml 文件)中引用大量对象还是使用集合(例如列表)更好或字典)更好的表现?

我没有很长时间编程,所以如果这是一个“常识”类型的问题,我很抱歉,但我主要关注的是性能方面

  1. 如何访问内存?例如,与 xml 文件在硬盘驱动器上使用更多内存相比,这些集合是否需要更多使用 RAM?

  2. 访问随机对象时哪个过程更快? IE。包含 100、1000 甚至 10,000 个对象的列表?我的猜测是访问内部列表或字典会比读取外部 xml 文件并尝试拉入对象信息更快。

  3. 是否认为其中一个选项比另一个选项更好?只是偏好吗? (我意识到这不一定是性能问题,但我相信它仍然值得了解)。

使用我在帖子中找到的示例(口袋妖怪),我的第一个想法是使集合成为内部的 2 件事情中的一件。

  1. 我将创建一个所有 pokemon 派生自的基类,然后创建具有特定 pokemon 种类的子类作为个人信息(尽管我相信有数百个 pokemon,所以这可能不切实际)。

  2. 我将创建一个名为 pokemon 的类,其中包含每个 pokemon 将具有的多个属性(例如名称、物种等...)

从这里我可能会制作一个列表或字典,以便在需要时引用每个口袋妖怪。

作为替代方案,我可能会像问题的发布者那样做,即创建一个包含 pokemon 列表的 xml 文件,然后在需要时调用该文件。

我包含此信息是为了让上述 3 个问题具有某种上下文,但同样,我主要关心的是当有大量对象时内部集合与外部文档的性能。

注意:外部文档不一定必须是 xml,但这是我发现的帖子中使用的。

【问题讨论】:

  • 如果您想知道哪个更快,请同时尝试,然后自己找出答案
  • 我没有在做一个会使用它的特定项目,但我只是想看看是否有人使用大量对象完成了一个项目,是否已经经历了思考过程,并且他们想出了什么。如果没有必要,我宁愿不重新发明轮子。
  • 所以你实际上根本不需要知道?如果是这样,为什么要问这个问题?如果你需要知道,写一个简单的测试并找出答案。
  • 这又取决于您的环境和业务情况。是否所有对象都适合到您的记忆中?如果你没有足够的内存,性能问题就无关紧要了。
  • 这个问题的提出更多是出于好奇而不是“需要”。尽管我加入 SO 的时间不长,所以如果在其他地方更好地询问(或不询问)这个问题,那么我会非常乐意将其删除。当然,我将自己解决问题的某些方面(查看可以访问列表的速度),但就内存的存储方式或被认为是良好的编程实践而言(如果有偏好的话)我缺乏这方面的知识。

标签: c# xml performance collections


【解决方案1】:

内部集合为序列化/反序列化内容提供了更好的性能。

这真的归结为您的要求是什么,而不是以更通用的方式决定事情。当应用程序很少访问您的数据并且您的应用程序是一个长时间运行的应用程序时,您可以继续序列化文件中的数据并在需要时反序列化它们以节省内存。但在更多情况下,这并不是什么大问题,尤其是对于具有大块内存的工作站。我宁愿远离这种方法。

【讨论】:

    【解决方案2】:

    部分答案:

    内存是如何访问的?例如,集合是否需要 更多地使用 RAM,而不是 xml 文件在硬盘上使用更多内存 开车?

    RAM 的使用取决于您是否一次加载整个 xml 文件。

    是被认为比编程实践更好的选项之一 其他?只是偏好吗? (我意识到这不一定是 性能问题,但我相信它仍然值得了解)。

    外部资源最明显的优势是每次更改数据时都不需要重新编译整个程序。还有其他优点/缺点取决于程序的大小,但通常,您可能想要更改的任何数据都不需要重新编译来更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多