[ 
https://issues.apache.org/jira/browse/SHIRO-566?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt Bishop updated SHIRO-566:
------------------------------
    Description: 
org.apache.shiro.util.CollectionUtils.asSet() and .asList() could use 
Collections wrappers for the passed-in elements. These are smaller and faster 
than copying the contents into other collections.

The editability of the returned Collections is not required as currently it 
will return either an unmodifiable emptyList() / emptySet() or a modifiable 
ArrayList / LinkedHashSet. Ideally it would wrap the LinkedHashSet in 
unmodifiableSet and declare the immutability of the returned collections in the 
docs.

In my use case for Shiro we create about 6000 - 7000 WildcardPermission objects 
per second. The great majority of them have a a list of parts with single 
subparts and thus don't need a proper LinkedHashSet created. This change 
improve the performance of our system by 10% under heavy load, mostly due to 
the reduced GC of temporary LinkedHashSet objects. 

  was:
org.apache.shiro.util.CollectionUtils.asSet() and .asList() could use 
Collections wrappers for the passed-in elements. These are smaller and faster 
than copying the contents into other collections.

The editability of the returned Collections is not required as currently it 
will return either an unmodifiable emptyList() / emptySet() or a modifiable 
ArrayList / LinkedHashSet. Ideally it would wrap the LinkedHashSet in 
unmodifiableSet and declare the immutability of the returned collections in the 
docs.

In my use case for Shiro we create about 6000 - 7000 WildcardPermission objects 
per second. The great majority of them have a single subpart and don't need a 
proper LinkedHashSet created. This change improve the performance of our system 
by 10% under heavy load, mostly due to the reduced GC of temporary 
LinkedHashSet objects. 


> CollectionUtils should use Collections wrappers of arrays if possible
> ---------------------------------------------------------------------
>
>                 Key: SHIRO-566
>                 URL: https://issues.apache.org/jira/browse/SHIRO-566
>             Project: Shiro
>          Issue Type: Improvement
>          Components: Authorization (access control) 
>    Affects Versions: 1.2.4
>         Environment: Any
>            Reporter: Matt Bishop
>            Priority: Trivial
>
> org.apache.shiro.util.CollectionUtils.asSet() and .asList() could use 
> Collections wrappers for the passed-in elements. These are smaller and faster 
> than copying the contents into other collections.
> The editability of the returned Collections is not required as currently it 
> will return either an unmodifiable emptyList() / emptySet() or a modifiable 
> ArrayList / LinkedHashSet. Ideally it would wrap the LinkedHashSet in 
> unmodifiableSet and declare the immutability of the returned collections in 
> the docs.
> In my use case for Shiro we create about 6000 - 7000 WildcardPermission 
> objects per second. The great majority of them have a a list of parts with 
> single subparts and thus don't need a proper LinkedHashSet created. This 
> change improve the performance of our system by 10% under heavy load, mostly 
> due to the reduced GC of temporary LinkedHashSet objects. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to