Updated webrev at http://cr.openjdk.java.net/~weijun/8197518/webrev.01/.
> On Feb 23, 2018, at 9:02 AM, Weijun Wang <weijun.w...@oracle.com> wrote: > > You mean I can save it somewhere and only update it when a cleanup is > performed? > > This should be better. Now there will be only isEmpty(), getFirst() and > addFirst(), and one less getLast(). > > Thanks > Max > >> On Feb 23, 2018, at 1:45 AM, Xuelei Fan <xuelei....@oracle.com> wrote: >> >> Looks like list synchronization is a factor of the performance impact. >> Maybe, you can have a private time for the oldest entry so don't >> access/iterate/cleanup entries list until necessary. The "at most every >> minute" may be not a good strategy in some situations. In fact, it's now almost "exactly every minute". What situations do you think it's not good? I cannot use size() because I have to remember all entries with lifespan to be correct. Thanks Max >> >> Xuelei >> >> On 2/22/2018 12:36 AM, Weijun Wang wrote: >>> Please take a review at >>> http://cr.openjdk.java.net/~weijun/8197518/webrev.00/ >>> Two notes: >>> 1. I tried list.subList(here, end).clear() but it's not faster. >>> 2. I have looked at ConcurrentHashMap + ConcurrentSkipListMap but will need >>> more time to verify its correctness and measure the performance gain. Since >>> the bug is reported on 8u, a safer fix looks better. >>> Noreg-perf. >>> Thanks >>> Max >