Мне нужно прочитать небольшие последовательности данных из файла 3,7 ГБ. Позиции, которые мне нужно прочитать, это , а не смежные , но я могу заказать IO так, чтобы файл читался от начала до конца.
Файл хранится в сети iSCSI SAN, которая должна быть способна обрабатывать / оптимизировать ввод-вывод в очереди.
Вопрос в том, как сделать за один раз запрос всех данных / позиций, которые мне нужны? Является ли это возможным? Я не думаю, что асинхронный ввод-вывод является опцией, потому что чтение очень мало (20-200 байт)
В настоящее время код выглядит так:
using (var fileStream = new FileStream(dataStorePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
for (int i = 0; i < internalIds.Count();i++ )
{
fileStream.Position = seekPositions[i].SeekPosition;
... = Serializer.DeserializeWithLengthPrefix<...>(fileStream, PrefixStyle.Base128);
}
...
}
Я ищу способы улучшить этот ввод / вывод, потому что я получаю немного более низкую производительность чтения. Кажется, что все времена поиска от перемещения головы складываются.