Если вашему ПК требуется 5-10 секунд для записи файла размером 100 КБ на диск, значит, у вас либо самый старый, самый медленный ПК в мире, либо ваш код делает что-то очень неэффективное.
Отключение кэширования на дискевероятно, будет только хуже, чем лучше.При наличии дискового кэша ваши записи будут быстрыми, а Windows сделает медленную часть сброса данных на диск позже.Действительно, увеличение буферизации ввода-вывода обычно приводит к значительному улучшению ввода-вывода в целом.
Вы определенно хотите использовать асинхронную запись - это означает, что ваш сервер начинает запись данных, а затем возвращается к ответам своих клиентов.в то время как ОС имеет дело с записью данных на диск в фоновом режиме.
Не должно быть никакой необходимости ставить записи в очередь (поскольку ОС уже сделает это, если включено кэширование диска), но эточто-то, что вы могли бы попробовать, если все остальное не помогло - это могло бы помочь, записывая только один файл за раз, чтобы минимизировать потребность в поиске на диске.
Как правило, для ввода-вывода использование более крупных буферов помогает увеличить пропускную способность,Например, вместо записи каждого отдельного байта в файл в цикле, запишите буфер данных (в идеале весь файл для указанных вами размеров) в одной операции записи.Это минимизирует накладные расходы (вместо вызова функции записи для каждого байта, вы вызываете функцию один раз для всего файла).Я подозреваю, что вы, возможно, делаете что-то подобное, поскольку я знаю, что это единственный способ снизить производительность до уровней, которые вы предлагали получить.
Файлы с отображением в памяти вам не помогут.Они действительно лучше всего подходят для доступа к содержимому огромных файлов.