my $c = Cache::Ref::CLOCK->new( size => $n, k => $k, );
This algorithm is provides a second chance FIFO cache expiry policy using a circular buffer.
It is a very well accepted page replacement algorithm, but largely for reasons which are irrelevant in this context (cache hits don't need to be serialized in a multiprocessing context as they only require an idempotent operation (setting a bit to 1)).
Cache::Ref::CLOCK - CLOCK cache replacement algorithm
The size of the live entries.
This is the initial value given to all hit entries.
As the hand moves through the circular buffer it decrements the counters.
The default is
1, providing semantics similar to a second chance FIFO cache.
Larger values of
k model LRU more accurately.
This is pretty silly though, as Cache::Ref::LRU is probably way more efficient for any
k bigger than 1.
This software is copyright (c) 2010 by Yuval Kogman.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.