文件V/S在内存中存储网络数据
File V/S in-memory storage of network data
我们有一个场景,一个函数在代码中被调用了很多次。该函数通过网络下载相同的URL。
我的实现方式是:
下载网络数据->保存到文件->读取文件并根据需要进行处理
在随后的函数调用中,该函数首先检查数据是否已经下载,文件是否已经存在,如果为真,则读取文件。
这样做是为了避免一次又一次地下载相同的网络数据。
然而,在代码审查中,其他工程师坚持认为使用本地静态变量来存储网络数据比使用文件系统更好——有人能解释一下为什么吗?为什么局部静态变量优于文件系统方法?
请注意网络数据确实是小容量存储是没有限制的。
在文件系统中存储文件必然比在内存中存储文件要花费更多的时间(参见Wikipedia关于内存层次结构的条目)。这里的基本问题是持久性:是否有必要在几个程序启动期间持久化(特别是少量数据)?如果不是,您可能应该将其保存在内存中(甚至可能处于已经处理的状态,以便快速访问)。
另一点:读写文件可能出错(只要看看这些类的MSDN条目中所有可能的异常)。如果向文件系统写入数据没有任何好处,那么就不要这样做(因为这只会给代码增加另一个潜在的危险),
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 通过网络、跨平台传递std::变体是否安全
- 如何在MNIST上提高网络运行的准确性
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 在 Cassandra 中使用 "time" 作为行键来存储网络数据包
- 如何从网络摄像机获取图像并将图像存储在openCV中
- 文件V/S在内存中存储网络数据