如何使用fgets计算for循环中的磁盘读取速度(以MB / s为单位)

时间:2012-01-26 17:45:46

标签: c windows

我有以下功能

for(i = 0; i < lines; i++)
    fgets(i[*compare], 36, fp);

它使用文件指针流fp中的字符串填充“指向X字符数组的X字符数组的指针。变量lines是文件所具有的行数(预先计算的)。

我希望计算fgets操作的读取速度。但是我不确定如何做到这一点,也不确定“公式”

1 个答案:

答案 0 :(得分:2)

使用clock_gettime获取一些时间,并将其包装在fgets周围。然后从a中适当地减去b,你就有了执行fgets所花费的时间(和一个clock_gettime调用)。

#include <time.h>
struct timespec a, b;
clock_gettime(CLOCK_MONOTONIC, &a);
fgets(...)
clock_gettime(CLOCK_MONOTONIC, &b);

36个字符不是很多,所以它会比可以明显测量的速度快。 (但后来我再次听到Linus的话(关于git),“也许在Windows上也许你可以[测量它]”......)无论如何,你现在(最多)这个很多字符在找到的delta时间内被转移。 / p>