А есть ли на современном оборудовании (SATA диск) и в современном linuxе (2.6.9) разница в скорости чтения данных в следующих 2х вариантах программы? Строчки, принадлежащие разным вариантам соответственно помечены цифрой в скобках.
#include <stdio.h>
int main ()
{
int x;
int xx [100000];
int i, z;
FILE *f;
f = fopen ("test6.dat", "r");
for (z = 1; z <= 200; z++)
(1) for (i = 1; i <= 800000; i++)
(2) for (i = 1; i <= 8; i++)
(1) fread (x, sizeof (x), 1, f);
(2) fread (xx, sizeof (xx), 1, f);
fclose (f);
return 0;
}
По моим проверкам
date +%s && ./test6 && date +%s;
ощутимой разницы не наблюдается.
Т. е. получается на уровне программы уровня пользователя не стоит заморачиваться с чтением данных большими "блоками" для увеличения скорости, а можно просто читать по одному значению?