$MODULE = "Tie::Cache"; $VERSION = .15; $DATE = 'TBA';
+ Better test.pl timing output, also differentiate between
cache with MaxBytes setting and one with just MaxCount,
as MaxBytes is a bit slower for data size calculations.
+ Better Tie::Cache options / object config error checking,
die() on obvious misconfigurations that will get developers
in trouble.
- MaxSize only set if MaxSize or MaxBytes are defined,
was defaulting to 1 otherwise, killing basic MaxCount config.
+ Optimizations for common use where Tie::Cache is not
subclassed for write()/read() API
$MODULE = "Tie::Cache"; $VERSION = .11; $DATE = '03/18/2001';
+ use of arrays for internal nodes structure instead of
hashes for savings on memory and lookup speed.
+ MaxBytes now more accurate with recursive length calculations
on reference keys & values, and added estimates of 240 bytes
per key/value pair, + 16 bytes per reference found, in addition
to the length of the data being stored.
A MaxBytes setting of 1000000 would then try to really limit
total memory consumption of the entire cache to 1M. This is
relevant when being used in high process environments like mod_perl
where memory savings are critical.
+ MaxSize has default of MaxBytes/10, so large cache entries don't
purge many others. If cache entry exceeds MaxSize in bytes, then
that value won't be cached.
$MODULE = "Tie::Cache"; $VERSION = .10; $DATE = '11/22/00';
- Allow for undef values to be stored like $cache{1} = undef
Really doesn't affect cache, but got rid off error message
in this case.
$MODULE = "Tie::Cache"; $VERSION = .09; $DATE = 'TBA';
+ Added benchmark section comparing Tie::Cache & Tie::Cache::LRU
$MODULE = "Tie::Cache"; $VERSION = .08; $DATE = '12/14/99';
- FETCH, or %cache reads like $cache{key} would returned
a defined value, null, when it should have been undefined.
This would breaks tests that test for defined($cache{$key}),
and is a big problem. I introduced this bug with my
tuning in .07 :(
$MODULE = "Tie::Cache"; $VERSION = .07; $DATE = '12/13/99';
+ Improved test suite to do some benchmarking, and
real interpreted tests.
+ Performance tuning making the cache about 5-10% faster.
+ MaxSize setting makes it so that key/value pair lengths
of MaxSize or greater will not be stored in the cache.
This prevents odd large entries from flushing the cache
of many smaller entries.
- setting Debug for one Tie::Cache hash is independent of
another's Debug setting, before one setting would affect
all the rest. To set Debug value for all Tie::Cache
hashes, set $Tie::Cache::Debug.
$MODULE = "Tie::Cache"; $VERSION = .06; $DATE = '2/16/99';
+ WriteSynch config option for TRUE CACHE. WriteSynch => 0
will have the dirty data be written back as late as possible.
WriteSynch => 1 is immediate write-through for data dirtied.
- STORE returns value stored; $cache{$key} = $value returns $value now
+ decomped FETCH better so it doesn't use STORE internally
necessary for new WriteSynch functionality
+ WriteSynch => 0 config set in test.pl to demostrate use.
+ Optimizations, especially for refreshing entries in cache on FETCH
$MODULE = "Tie::Cache"; $VERSION = .05;
+ Keep track of hits / misses even without debug option set.
$MODULE = "Tie::Cache"; $VERSION = .04;
- Get rid of -w warnings in test.pl.
$MODULE = "Tie::Cache"; $VERSION = .031;
- Removed test2.pl from installation as it was getting installed
with Tie::Cache :(
$MODULE = "Tie::Cache"; $VERSION = .03;
- Global destructor bug fixed. Wasn't flushing cache consistently.
$MODULE = "Tie::Cache"; $VERSION = .02;
+ MaxBytes config option is new. It allows cache size to
be based on the bytes the cache holds.
+ test.pl output has Debug set to 2, so full debugging output is
displayed. This allows a new user to see how cache works.
$MODULE = "Tie::Cache"; $VERSION = .01;
First release of module.