正在禁用c++代码的文件缓存

Disabling file caching for c++ code

本文关键字:文件 缓存 代码 c++      更新时间:2023-10-16

我想知道是否有一种方法可以禁用c++代码的文件缓存。我正在运行一些从磁盘读取、写入和修改某些文件格式的测试,而时间测试很可能是由于缓存而产生的偏差。我想知道是否有任何快速的方法可以使用任何编译器指令或操作系统特定的命令来关闭缓存?

我的测试目前是在linux、mac和windows上使用gmake构建的。欢迎提出任何建议/意见。

谢谢。

在符合POSIX的操作系统上,fsync可能是您想要的。在读取文件之前和修改之后调用它。这可能会大大降低你的程序速度。

int setvbuf(FILE*流,char*缓冲区,int模式,size_t大小);

带参数_IONBF不使用缓冲区。每个I/O操作都会尽快写入。在这种情况下,缓冲区和大小参数将被忽略。

您应该了解一下O_DIRECT选项。它(大部分时间)要求操作系统绕过缓存。