v2.1.0
What's Changed
- Added
ConcurrentLfu
, a .NET implementation of the W-TinyLfu admission policy. This closely follows the approach taken by the Caffeine library by Ben Manes - including buffered reads/writes and hill climbing to optimize hit rate. AConcurrentLfuBuilder
provides integration with the existing atomic value factory and scoped value features. - To support
ConcurrentLfu
added theMpscBoundedBuffer
andStripedMpscBuffer
classes. - To support
ConcurrentLfu
added theThreadPoolScheduler
,BackgroundThreadScheduler
andForegroundScheduler
classes. - Added the
Counter
class for fast concurrent counting, based on LongAdder by Doug Lea. - Updated
ConcurrentLru
to useCounter
for all metrics and added padding to internal queue counters. This improved throughput by about 2.5x with about 10% worse latency. - Added DebuggerTypeProxy types to customize the debugger view of
FastConcurrentLru
,ConcurrentLru
,FastConcurrentTLru
,ConcurrentTLru
andConcurrentLfu
. - API documentation is now included in the NuGet package. Provided documentation for all public APIs.
- Rewrote and corrected bugs in the throughput analysis tests, which now support Read, Read + Write, Update and Evict scenarios.
Full changelog: v2.0.0...v2.1.0