Во многих операционных системах вы можете использовать файловую систему в памяти, такую как tmpfs - и в Windows «временные файлы» (открываются с соответствующими флагами, затем перематываются, а не закрываются) ведут себя аналогично (т.е., может остаться в памяти).
Однако, здесь не так много, чтобы получить что-то большее по сравнению с последовательной записью (с большой буферизацией) и чтением (так же) с не фрагментированного диска, для большихфайлы - преимущества производительности tmpfs в основном для небольших файлов.Если ваша производительность очень плохая, либо диск ужасно фрагментирован, либо (возможно, более вероятно, в наши дни саморегулирующихся файловых систем) вы не используете буферизацию надлежащим образом (возможно, просто недостаточно буферизируете).(конечно, оба фактора могут быть в игре).В конце концов, современные устройства и файловые системы могут иметь потрясающую производительность при потоковой передаче огромных буферов в память и из памяти.
Для определенного объема ОЗУ, выделенного для буферизации, вы можете получить более высокую производительность (как на уровне приложения выглядитогромное количество крошечных операций записи и чтения), если это ОЗУ находится в пользовательском пространстве в адресном пространстве вашего приложения (а не под контролем ядра, например, в tmpfs), просто потому, что вам потребуется меньше переключений контекста - и переключается с режима пользователя на режим ядра иback имеют тенденцию доминировать во время выполнения, когда единственными другими выполняемыми операциями являются копии небольшого количества памяти назад и вперед.Когда вы используете очень большие буферы в библиотеке stdio вашего приложения, ваш «I / O» составляет копии пользовательской памяти в пределах вашего адресного пространства с очень редкими «потоковыми» операциями, которые фактически передают эти буферы туда и обратно.