Обнаружилось (залежи старого кода), что при считывании файла с данными значения считываются по одному. По четыре байта. То есть, на каждые четыре байта -- одно обращение к функции чтения с диска.
Замена всего этого безобразия на считывание одним куском дало выигрыш по скорости в десять раз.
Не, я знал, что возникает оверхед при считывании по одному значению, но не знал, что он такой большой.