-
Type:
Improvement
-
Status: Resolved
-
Priority:
Trivial
-
Resolution: Fixed
-
Affects Version/s: 1.2.4
-
Fix Version/s: 1.3.0
-
Component/s: Authorization (access control)
-
Labels:None
-
Environment:Any
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.
- links to