ofbiz-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ben Manes (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OFBIZ-6747) Replace ConcurrentLinkedHashMap by Caffeine
Date Mon, 11 Jun 2018 21:09:00 GMT

    [ https://issues.apache.org/jira/browse/OFBIZ-6747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16508752#comment-16508752

Ben Manes commented on OFBIZ-6747:

If you do switch to Caffeine, a few minor notes to be aware of...
 # Modifying the maximum size at runtime is now at:
{{Cache.policy().eviction().ifPresent(policy -> policy.setMaximum(newInMemory)}}.
 # Caffeine uses [W-TinyLFU|https://github.com/ben-manes/caffeine/wiki/Efficiency] instead
of LRU, which incorporates frequency to provide a much higher hit-rate
 # The [overhead|https://github.com/ben-manes/caffeine/wiki/Benchmarks#read-100-1] of both
caches, compared to an unbounded {{ConcurrentHashMap}} is probably not worth optimizing around.
Caffeine performs at 33% read throughput and CLHM at 28%. In reality that's more than adequate
since micro-benchmarks benefit from hardware cache efficiencies and don't include any application
overhead. So in practice one does not observe a penalty given other work involved.

Per your findings, I would think a custom {{Cache}} interface with your methods would be cleaner
than {{instanceOf}} checks so as to encapsulate all of the implementation details of a provider.

> Replace ConcurrentLinkedHashMap by Caffeine
> -------------------------------------------
>                 Key: OFBIZ-6747
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-6747
>             Project: OFBiz
>          Issue Type: Task
>            Reporter: Ben Manes
>            Assignee: Jacques Le Roux
>            Priority: Minor
> Similar to OFBIZ-3779, please consider upgrading the library used by [UtilCache|https://github.com/apache/ofbiz/blob/trunk/framework/base/src/org/ofbiz/base/util/cache/UtilCache.java]
(v1.2). The current version is 1.4.2 and is the last major release planned.
> The preferable alternative would be to upgrade to [Caffeine|https://github.com/ben-manes/caffeine].
This is a Java 8 rewrite based on what I've learned since developing CLHM and Guava's cache.
As expected it provides [superior performance|https://github.com/ben-manes/caffeine/wiki/Benchmarks].
It also provides a [near optimal|https://github.com/ben-manes/caffeine/wiki/Efficiency] eviction

This message was sent by Atlassian JIRA

View raw message