我首先要承认这是一个类项目,因为它会很明显。我们应该读取以探测文件系统的块大小。我的问题是,这样做的时间似乎是线性增加,没有像我所期望的步骤。探测文件系统块大小
我定时读这样的:
double startTime = getticks();
read = fread(x, 1, toRead, fp);
double endTime = getticks();
其中getticks使用RDTSC指令。恐怕有缓存/预取,导致读取在fread期间不需要时间。我试图在每次执行我的程序之间创建一个随机文件,但这并不能缓解我的问题。
准确测量从磁盘读取所用时间的最佳方法是什么?我很确定我的块大小是4096,但我怎样才能获得数据来支持它?
你想要给出块大小的东西,或者改进实验以从时间猜测块大小的建议吗? – 2009-09-29 18:52:48
我想我正在寻找实验性帮助。我无法让C做I/O所需的工作。 – plor 2009-09-29 22:48:37
检出fcntl(..,F_NOCACHE,..)以完全禁用缓存。 – rpj 2011-02-25 03:15:27