Постоянно ли запись в файл ухудшает производительность программы? - PullRequest
0 голосов
/ 23 ноября 2018

Представьте себе параллельную «высокопроизводительную программу», которая считывает файлы, каждый процесс выполняет задачу с входными данными, а затем каждый процесс записывает выходные данные для задачи в один общий выходной файл перед повторением этой процедуры.

С точки зрения производительности, неэффективно ли записывать выходные данные в файл, когда каждый процесс завершает задачу?

Было бы более эффективно сохранять результаты в массиве и записывать массив в выходной файлв конце?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Это проблема, когда запись с полным IO-диском должна выполняться без задержек клиентских процессов или потоков.Если используются вызовы библиотеки Std C, она использует буфер памяти, который сбрасывается при переводе строки или fflush ().Если данные недостаточно велики, использование массива эффективно в конце, и их можно записать в файл, чтобы задача, требующая высокой производительности, не страдала от задержек ввода-вывода.

0 голосов
/ 23 ноября 2018

Файлы обычно медленнее, чем RAM.Однако насколько медленнее?Если замедление составляет менее 1%, большинству людей все равно.Если это замедление на 50%, некоторым людям все равно.

Как всегда с производительностью, измерьте ее одним или другим способом, а затем решите, является ли разница существенной.Решение обычно зависит от факторов, которые сильно зависят от приложения.

...