Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
А вот мои мысли 11.06.05 23:49 Число просмотров: 3220
Автор: KUV Статус: Незарегистрированный пользователь Отредактировано 11.06.05 23:53 Количество правок: 1
|
Во-первых это нужно не для курсовой работы а для программы, которую можно даже будет обозвать "разработкой"=)
Насчет файлового кэша ОС я знаю, но кэшироваться будут данные из БД. В общих словах - в БД хранится куча "серализованных" объектов. Соотв. при загрузке из БД объект читает свои свойства, и при выгрузке из памяти сохраняет изменения. В этой большой систебе объектов проистекают какието события, но хранить все их в памяти нельзя, т.к. их слишком много(например пара миллионов штук, суммарными данными на гиг-два). Благодяры кэшу я хочу достигнуть такого эффекта - в памяти хранятся только те элементы которые сейчас используются, это должно очень сильно ускорить всю программу.
Что касается предложенного варианта кэширования - меня терзают сомнения относительно его эффективности, особенно при большом кэше. Если у нас кэш размером N элементов, то процесс уменьшения показателей будет занимать O(N), а это может быть существенно (еще надо учитывать что будут выполняться действия типа взятия логарифмов). Я предложу другой вариант, более быстрый в этом плане.
Сами элементы хранятся в бинарном дереве, так что искать/удалять элемент мы можем за O(logN). Также создадим очередь из элементов кэша, с ней операции будут занимать O(1). При обращении к элементу будем делать следующее:
1) если элемент найден в кэше, то переносим его в голову очереди
2) если элемент не найден, то удаляем элемент из хвоста очереди, грузим запрошенный и помещаем его в голову очереди
Единственный минус этого способа - если элемент запрошен много раз, а потом забыт, то он вылетит из очереди очень быстро. Но при равномерном обращении наиболее востребованные элементы будут находиться ближе к голове очереди.
Т.е. я думаю чем больше нагрузка на всю систему, тем более адекватно кэш должен выбирать элементы для хранения. Имхо это неплохо.
Жду критики...=)
|
|
|