В своей программе я моделирую систему N-тел для большого числа итераций. Для каждой итерации я получаю набор из 6N координат, которые мне нужно добавить в файл и затем использовать для выполнения следующей итерации. Код написан на C++ и в настоящее время использует метод ofstream
write()
для записи данных в двоичном формате на каждой итерации.
Я не эксперт в этой области, но мне хотелось бы улучшить эту часть программы, поскольку я нахожусь в процессе оптимизации всего кода. Я чувствую, что задержка, связанная с записью результата вычислений на каждом цикле, значительно замедляет производительность программы.
Я в замешательстве, потому что у меня нет опыта в реальном параллельном программировании и низкоуровневом файловом вводе-выводе. Я подумал о некоторых абстрактных методах, которые, как мне кажется, я мог бы реализовать, поскольку я программирую для современных (возможно, многоядерных) машин с ОС Unix:
mmap
(размер файла может быть огромным, порядка гигабайта, достаточно ли надежен этот подход)? Однако я не знаю, как их лучше реализовать и правильно сочетать.