Hi.

----- Original Message -----
From: "Alexis Agahi" <[EMAIL PROTECTED]>
To: "'Avalon Developers List'" <[EMAIL PROTECTED]>
Sent: Monday, January 07, 2002 8:17 AM
Subject: excalibur.cache.LRUCachePolicy


> Hi,
>
> I've checked the cache implementation from excalibur scratchpad
> and notice that LRUCachePolicy use the ListCachePolicy LinkedList
> to perform the LRU mecanism.
>
> To have a LRU 'hit' effect, it removes the object from the list
> and put it at the top.
> What if the list is really huge? I mean, to perform the remove it

It is not a Cache if it is really huge. ;-) Just kidding.

> has to scan the whole list, since it doesn't have an index (or
> I'm wrong)?
>
> I would suggest having another approach using a logical clock
> value and 'time' hashmap.
>
> Something like:
> When a 'hit' is called, it gets the current object and set its
> 'value' to the current logical time.
> To remove the oldest, it gets the oldest value in the time map.
>
> To be really honest, this approach is not necessarily the best:
> the remove case is slower that the linked list one, but the 'hit'
> could be faster. Now it depends on the hit/remove ratio. But I
> guess in an LRU cache, you should have a maximum of 'hit' call.

Yes. If you want that kind of ReplacementPolicy. Just implement it. and use
like bellow.

final Cache cache = new DefaultCache( new TimeMapLRUCachePolicy(),
MemoryCacheStore( 1000000000 ) );

and test it.
and send to this list.

Thanks.

>
>
> Regards
>
> --
> mailto:[EMAIL PROTECTED] -
> http://sourceforge.net/projects/jabaserver
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to