Когда я прокомментировал ваш вопрос, у меня не было времени на детали, поэтому я попытаюсь ответить. С тех пор код изменился, и я не уверен, что добавил бы этот комментарий к коду, как сейчас.
Тем не менее, основная причина, побудившая меня добавить этот комментарий, остается в силе: Если вы не измерили и не обнаружили, что рассматриваемый код действительно оказывает существенное негативное влияние на производительность, не пытайтесь оптимизировать . Вместо этого постарайтесь сделать ваш код максимально читабельным .
Я серьезно сомневаюсь, что копирование данных в память окажет значительное влияние на производительность после копирования их с диска в память. Тем не менее, поскольку ваш код в соответствии с предоставленными данными в любом случае делает предположения о расположении структуры в памяти, непосредственное чтение структуры не сделает код менее читабельным (или менее уязвимым для изменений в этом расположении):
COUPLE titanic;
FILE *f = fopen("myfile", "rb");
fread(&titanic, sizeof(titanic), 1, f);
Или, если у вас действительно есть массив, прочитайте непосредственно в массив:
COUPLE titanic[SIZE];
FILE *f = fopen("myfile", "rb");
fread(&titanic, sizeof(titanic), SIZE, f);
В зависимости от SIZE
, последний действительно может иметь потенциально огромную разницу в производительности. Доступ к диску для больших кусков, как правило, быстрее, чем для небольших кусков. (Хотя кеширование диска может облегчить это.)