Есть программа, каждые n времени происходит дамп огромного буфера на диск. Сложность в том, что я хочу, чтобы программа не особо замечала этот дамп.
Как сейчас работает программа: она собирает из огромного буфера данные в малый буфер до его заполнения и дампает на диск, и так пока не пройдёт по всему огромному буферу (происходит копирование). Я запускаю её в один поток и полностью нагружаю одно ядро. Однако я заметил, что из 10 секунд на дамп + копирование в малый буфер, я трачу 7 секунд на сам дамп. Я могу распараллелить процесс на несколько файлов, но тогда мне нужно и несколько потоков (по-одному на файл).
Как я полагаю, большую часть времени я жду, пока диск прокрутиться до нужного файла, в этот момент программа с полным малым буфером ждёт и бездействует. Хотелось бы создать условно k файлов и писать в каждый по мере его доступа, чтобы один поток мог писать без остановки (порядок данных не важен). Существует ли готовое решение для этого и существует ли решение для записи, которое быстрее, чем стандартный
use std::fs::File;
use std::io::Write;
use std::{thread};
let mut output = File::create(path.clone()).expect(&*format!("failed to create file with path {}", path.clone()));
// some code
output.write(&*buf).expect("failed to write");