[ 
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

Reply via email to