我想知道是否有办法禁用c ++代码的文件缓存。我在从磁盘读取,写入和修改某些文件格式时运行了一些测试,并且时序测试很可能由于缓存而出现偏差。我想知道是否有任何快速方法可以使用任何编译器指令或特定于操作系统的命令来关闭缓存?
我的测试目前是在linux,mac和windows上使用gmake构建的。欢迎任何建议/意见。
感谢。
答案 0 :(得分:1)
在符合POSIX标准的操作系统上,fsync可能是您正在寻找的内容。在读取文件之前和修改之后调用它。这可能会大大减慢您的计划速度。
答案 1 :(得分:0)
int setvbuf(FILE *流,char *缓冲区,int模式,size_t size);
带有参数_IONBF的不使用缓冲区。每个I / O操作均应尽快写入。在这种情况下,buffer和size参数将被忽略。
答案 2 :(得分:0)
您应该看看 O_DIRECT
选项。它(大部分时间)要求操作系统绕过缓存。