Дано: некий процесс ведет лог своей работы, ожидаемый максимальный размер лога порядка нескольких Мбайт.
Процесс ресурсоемкий, сильно загружает CPU, вероятно использует файл подкачки и периодически считывает данные с диска.
Требуется: сохранять лог в файл без ущерба для скорости работы процесса
Решения, которые пришли мне в голову:
1. Хранить лог в виртуальной памяти и сохранять при выходе неприемлемо, т.к. довольно велика вероятность аварийного завершения процесса.
2. Открывать и закрывать файл для каждой записи в отдельности — медленно.
3. Можно создать объект ядра "файл" и писать туда при помощи WriteFile, но не хотелось бы тормозить процесс до завершения функции. Асинхронная запись через WriteFile не подходит, так как нужна совместимость с Win9x.
4. Создать проекцию файла с флагом PAGE_READWRITE, спроецировать на адресное пространство и писать туда, чтобы Win сама сохраняла изменения на HDD, когда представится такая возможность.
Верны ли мои рассуждения ? Даст ли последний вариант выигрыш в производительности ?