Charset.lookupViaProviders uses new ServiceLoader instance on each miss.

Xueming Shen xueming.shen at
Mon Jan 12 23:31:24 UTC 2015

We do have map based cache in standard and extended charset provider
implementation already. The standard version is prehashedmap based, it
probably should be fast enough. The extended version is a treemap based,
which probably is slow.

I'm a little surprised that the 2-elements cache in Charset actually makes
big difference for the prehashedmap based cache in standard charsets

Yes, we don't cache the non-builtin provider.  It might trigger performance
hit if certain number of charsets from that provider is frequently looked up.


On 01/12/2015 02:41 PM, Martin Buchholz wrote:
> I don't disagree about 3 elements in the cache being better than 2.
> When I implemented this crappy cache, it was all about "2 is better than 1".
> Yeah, maybe we could get a "real" cache someday...
> On Mon, Jan 12, 2015 at 1:26 PM, Ulf Zibis<Ulf.Zibis at>  wrote:
>> Am 12.01.2015 um 20:42 schrieb Martin Buchholz:
>>> Historical notes:
>>> I added the two-element cache many years ago, assuming that code that
>>> repeatedly accessed more than 2 charsets would be rare.
>> I suspect this opinion, see:
>> bugdatabase/
>> -Ulf

More information about the core-libs-dev mailing list