如何在应用程序运行时管理应用程序数据? (频繁的IO与更多的内存使用)

时间:2011-02-12 08:51:50

标签: desktop-application data-management

我对桌面应用程序有一般性问题。我和我的朋友正在讨论应用程序运行时应如何管理应用程序数据。我们争论了两种方法,无法得出结论。这两种方法是:

  1. 在需要时读取数据,一旦更改就将数据写入磁盘。
  2. 在应用程序启动时将所有应用程序数据加载到内存中,在内存中修改它,最后在应用程序关闭时写入磁盘。
  3. 据我了解,主要论点是:

    1. #2更快,因为所有数据都在内存中,可以快速访问。
    2. #2更好,因为它使用最小的文件IO,据我所知,这被认为是一种缓慢且昂贵的操作。
    3. #1更好,因为所有数据始终与磁盘同步,因此异常程序终止时数据丢失的可能性有限。
    4. #1更好,因为应用程序不会占用太多内存。
    5. 编辑:我们讨论的具体应用是课程管理系统,涉及4个主要方面:管理员,教师,课程和学生。上述所有内容的数据都存储在磁盘上的文件中。基本上,应用程序主要是数据驱动的。

2 个答案:

答案 0 :(得分:1)

将数据保存在可能/期望的内存中(如果您的应用程序仅使用部分数据,则加载未使用的部分将浪费RAM),并在更改后立即写入/刷新更改(或在一些延迟不活动后在后台线程中异步)。

如果您使用的平台支持内存映射文件,请查看它们。 MMF可以让您非常有效地结合这两种方法。

答案 1 :(得分:0)

对我来说2更好。通用规则是减少I / O调用=快速程序。

但我们无法将所有内容加载到内存中。

这个问题的回答取决于对申请的申请和条件的条件。

如果您能提供更多详细信息,那就更好了。