У меня есть файл размером около 7 МБ, который сохраняется в моей локальной папке за считанные секунды. Однако сохранение этого файла в сетевом расположении занимает минут . Мне интересно, что я могу сделать, чтобы ускорить это. Вот мои текущие варианты:
- Сохраните данные во временный файл на локальном компьютере, затем скопируйте временный файл в сетевой путь . Я, вероятно, сделаю это, так как это самый простой и самый удачный вариант.
- Используйте
SetFilePointerEx()
и SetEndOfFile()
. Я подумал, что это может быть полезно, основываясь на ответе на этот вопрос: Создание большого файла в Windows
- Буфер пишет . Я мог бы кэшировать записываемые данные самостоятельно и очищать при заполнении буфера, но разве это не было бы избыточно с кэшированием, которое уже выполняется ОС?
# 1 кажется лучшим вариантом, но мне интересно, есть ли у кого-нибудь совет по поводу лучшего способа ускорить сохранение в сетевых путях?
Редактировать: Сеть находится в гигабитной локальной сети, поэтому скорость не должна быть проблемой. Копирование файла по сетевому пути занимает около 1 секунды. Я только что заметил, что мы вызываем WriteFile () для более мелких порций данных, чем нам, вероятно, следовало бы, поэтому оптимизация кода более высокого уровня для написания более крупных порций, вероятно, поможет, но разница в скорости все еще настолько значительна, что все еще стоит задать вопрос .