Нужно записывать последние сообщения пользователей, если до этого было уже записано от него сообщение - перезаписать.
Мои варианты:
Какая реализация более рациональна? А может есть идея получше?
Условное количество пользователей - 10.000, количество сообщений в минуту > 100
Если уж нельзя с базой данных, и обязателен файл (может, просто в памяти держать?) - то я бы сделал файл с фиксированным размером записи, чтоб точно хватало для этого сообщения, типа
struct {
char user[N];
char msg[M];
}
При открытии файла создавал бы в памяти список "пользователь - позиция в файле" (тот же map) и перезаписывал бы нужное место, которое бы очень быстро находил без поиска в самом файле. При добавлении пользователя - соответственно расширял бы файл.
Текстовый формат для такого - проще застрелиться - все время переписывать файл до конца...
Но все же подумайте - может, лучше держать в памяти, и сбрасывать в файл только время от времени? А то у вас будет сплошное пиление диска...
Сборка персонального компьютера от Artline: умный выбор для современных пользователей