В последнее время у меня возникают проблемы с чтением больших файлов на сетевом диске, и я просто не могу точно определить, что я делаю неправильно.Я пробовал как в C ++ (Unmanaged), так и в C # и имел примерно одинаковую производительность на обоих ... которые были несколько плачевными.
Иногда он будет читать в сети файл 4 КБ / с, но если этоФайл расположен на локальном HD, он легко достигнет максимальной скорости передачи данных, которую может выдавать HD.То есть с чтением порций по 64 КБ ... Я пробовал с большими буферами до безумных чисел или меньше, и это не имеет большого значения.
Я пробовал асинхронный ввод-вывод в C # с BeginRead наFileStream и OVERLAPPED IO в C ++, а также синхронные операции чтения, и у них у всех были одинаковые проблемы, которые медленны в сети.
Единственное решение, которое мы придумали, - это скопировать файл с помощью функции OS CopyFile.на локальном HD, прежде чем читать файл, но я не слишком доволен этим подходом.Просто кажется, что CopyFile делает что-то, чем мы не занимаемся, что делает его невероятно быстрым, чем наш подход.
Кто-нибудь знает, почему это так?