文件V / S内存中的网络数据存储

时间:2014-03-26 13:39:34

标签: c++

我们有一个场景,在代码中很多次调用某个函数。该功能通过网络下载相同的URL。

我实现这个的方式是:

下载网络数据 - >将其保存到文件 - >根据需要阅读文件和流程

在后续函数调用中,此函数首先检查数据是否已下载且文件是否已存在,如果为true,则只读取文件。

这样做是为了不会一次又一次地下载相同的网络数据。

然而,在代码审查中,其他工程师坚持认为使用本地静态变量存储此网络数据是一个好主意而不是使用文件系统 - 有人可以解释原因吗?为什么本地静态变量优先于文件系统方法?

请注意,网络数据非常小 - 存储空间不是限制因素。

1 个答案:

答案 0 :(得分:1)

好吧,将文件存储在文件系统中会花费更多时间,然后将其存储在内存中(See Wikipedia entry on Memory Hierarchy)。这里的基本问题是持久性:是否有必要在几个程序启动时保留(特别是少量数据)?如果不是,您应该将其保留在内存中(可能甚至在已处理的状态下以便快速访问)。

另一点:读取和写入文件可能会出错(只需查看这些类的MSDN条目中的所有可能异常)。如果您没有通过将数据写入文件系统来赢得任何东西,那么就不要这样做(因为它只会给您的代码增加另一个潜在的危险),