-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Roadmap
Ben Manes edited this page Sep 16, 2015
·
135 revisions
- Replace
LRUwith EdenQueue eviction policy- Based on simulation analysis this has optimal performance and a low footprint
- Allow hot reads to skip maintenance work (maybe 2-3x speedup?)
- Benchmark arena spacing vs padding for better false sharing avoidance
- Explore better fork-join scheduling for maintenance ("chewing up threads")
- This only happened on a synthetic load test so FJ was thrashing
- To combat that, our benchmarks use a single-threaded FJ pool
- A little smarter scheduling should resolve this quirk
A major revision that includes API incompatible changes.
- Adopt alternative eviction policy
- RemovalListener
- Use friendlier typed lambda syntax to chain as
(k, v, cause) -> ... - RemovalNotification retained as helper, but not used in the API
- Use friendlier typed lambda syntax to chain as
- AsyncLocalCache
- Consider extending Cache<K, CompletableFuture<V>> interface
- Cache: Conflict on get(k, k -> v) with get(k, k -> future)
- LoadingCache: Conflicts on getAll returning future<map> vs map<k, future>
- Add asMap() view of key -> future
- Consider extending Cache<K, CompletableFuture<V>> interface
- Stats
- Show disabled stats as either
-1or provide a flag onPolicy
- Show disabled stats as either
- Tracing
- Remove deprecated methods
- Use snake case for system properties (consistency with Typesafe Config library)
- This package may be removed entirely after integrating a optimal replacement policy
- CacheLoader
- Revisit having loads throw checked exceptions (forgot why it was decided against)
- JCache
- Rename CopyStrategy to Copier
- Misc
- Remove NonReentrantLock (embed usage)
- Consider removal of UnsafeAccess (or wait until VarHandles rewrite?)
- Review ConcurrentLinkedStack for promotion out of Beta status
- Collections
- Simulator
- Add weight and expiration support
- Consider encoding the linked lists as arrays
- 64-bit reference becomes 32-bit int (only if compressed OOPS is not enabled)
- Better caching effects due to contiguous data
- Cons: Limits the size (2B entries), cost is minimal due to maintenance done using ForkJoinPool

