【发布时间】:2010-12-02 09:48:59
【问题描述】:
我首先要承认这是一个课堂项目,因为它非常明显。我们应该进行读取以探测文件系统的块大小。我的问题是执行此操作所需的时间似乎呈线性增加,没有像我预期的那样采取任何步骤。
我是这样安排阅读时间的:
double startTime = getticks();
read = fread(x, 1, toRead, fp);
double endTime = getticks();
getticks 使用 rdtsc 指令的地方。恐怕有缓存/预取导致读取在 fread 期间不需要时间。我尝试在每次执行我的程序之间创建一个随机文件,但这并不能缓解我的问题。
准确测量从磁盘读取所用时间的最佳方法是什么?我很确定我的块大小是 4096,但是我怎样才能获得支持它的数据呢?
【问题讨论】:
-
你想要一些东西来给出块大小,或者关于改进你的实验以从时间猜测块大小的建议吗?
-
我想我正在寻找实验帮助。我无法让 C 用 I/O 做我想做的事。
-
查看 fcntl(.., F_NOCACHE, ..) 以完全禁用缓存。