Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2006-03-05 05:29:23


>> That's an implementation detail. It isn't required by the spec,
>> although that may be the most obvious way to implement the spec. An
>> alternate
>> implementation would be to keep a pool of directory entry objects and
>> recycle them if performance was a concern. It would be great if
>> Boost had a cache library to make such a strategy trivial to
>> implement.

What kind of cache did you have in mind? Regex has an "Object Cache" (see
boost/regex/pending/object_cache.hpp) that I always meant to submit for full
Boost status but never got around to :-(

It simply maps a "key" to an instance of an object constructed from the key:
if the object already exists it returns it, otherwise it constructs a new
one and caches it. Objects are returned as a shared_ptr<const Object> (the
shared_ptr is needed for memory management, since neither the cache not the
client have exclusive ownership on the object). Useage is simply:

shared_ptr<const Object> obj =
   object_cache<Key, Object>::get(
       my_key,
       max_number_of_objects_to_cache);

To be honest usefulness is pretty limited, and threading issues add a small
performance hurdle, that means that "Objects" have to be fairly expensive to
construct before it becomes useful.

Still, there you go ;-)

John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk