[
https://issues.apache.org/jira/browse/COLLECTIONS-469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13657232#comment-13657232
]
Thomas Neidhart commented on COLLECTIONS-469:
---------------------------------------------
Imho, it would even be better to keep the Tuple <Object, expirationTime> in a
PriorityQueue.
This would render the traversal of the full map obsolete, as we only peek /
remove from the queue until we find objects that are expired.
> PassiveExpiringMap performance improvemend and refreshing policy
> ----------------------------------------------------------------
>
> Key: COLLECTIONS-469
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-469
> Project: Commons Collections
> Issue Type: New Feature
> Components: Map
> Affects Versions: 4.0-beta-1
> Reporter: l0co
> Priority: Minor
>
> A copy from COLLECTIONS-467.
> Two remarks about current trunk implementation of PassiveExpiringMap.
> You should additionally keep the value of the next element timeout (the
> youngest timeout) in object field, so that you don't need to iterate through
> whole map to find elements for expiration on each call. It improves
> performance by calculating only simple if for most cases:
> {code}
> public class PassiveExpiringMap {
> long youngestTimeoutMs = 0; // assert to have next timeout time for
> youngest element here always, or 0 if map is empty
>
> private void removeAllExpired(final long now) {
> if (youngestTimeoutMs>0 && youngestTimeoutMs<=now) {
> // do the cleanup
> }
> }
> }
> {code}
> The second remark concerns the refreshing policy. As I can see there's no
> refreshing policy in current implementation, there should be at last two
> policies: NoRefresh (working as the current) and RefreshOnHit - which updates
> element expiration time when the element is "hit" (eg. by get()), so that the
> map always removes the least used resources.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira