正在禁用c++代码的文件缓存
Disabling file caching for c++ code
我想知道是否有一种方法可以禁用c++代码的文件缓存。我正在运行一些从磁盘读取、写入和修改某些文件格式的测试,而时间测试很可能是由于缓存而产生的偏差。我想知道是否有任何快速的方法可以使用任何编译器指令或操作系统特定的命令来关闭缓存?
我的测试目前是在linux、mac和windows上使用gmake构建的。欢迎提出任何建议/意见。
谢谢。
在符合POSIX的操作系统上,fsync可能是您想要的。在读取文件之前和修改之后调用它。这可能会大大降低你的程序速度。
int setvbuf(FILE*流,char*缓冲区,int模式,size_t大小);
带参数_IONBF不使用缓冲区。每个I/O操作都会尽快写入。在这种情况下,缓冲区和大小参数将被忽略。
您应该了解一下O_DIRECT
选项。它(大部分时间)要求操作系统绕过缓存。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何在文件系统之上添加层?就像OneDrive或Google云端硬盘中的缓存一样
- 如何指定创建文件函数获取未缓存的结果?
- 为什么此CMAKE初始缓存文件会导致如此奇怪的错误
- Make/g 的缓存标头文件
- C++实现文件缓存(如 Web 浏览器)的库
- 哪个文件在Windows Embedded Compact 7.0上配置缓存
- 如何找到IE浏览器缓存文件的完整路径?
- 删除IE中"缓存清除"上的文件
- 正在禁用c++代码的文件缓存
- 如何写入文件,然后将其读回以验证其内容,确保您获得的是磁盘上的内容而不是缓存
- 使用std::ifstream强制读取磁盘,而不是文件缓存
- 使用FILE_FLAG_RANDOM_ACCESS访问文件,并限制缓存大小
- 缓存对象应该直接从文件系统中读取吗?
- 如何在c++中创建临时文件来帮助缓存大数据
- 为什么写入文件会增加缓存未命中和分支未命中这么多
- c++视口缓存目录中的文件