[ https://issues.apache.org/jira/browse/FELIX-4819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Philippe Marschall updated FELIX-4819: -------------------------------------- Attachment: ResolverImpl.java.patch Patch that fixes the issue. The patch replaces the following pattern: {code} if (set.contains(object)) { return; } set.add(object); {code} with this one: {code} if (!set.add(object)) { return; } {code} in order to minimize the hash lookups. > Use Set instead of List for cycle detection > ------------------------------------------- > > Key: FELIX-4819 > URL: https://issues.apache.org/jira/browse/FELIX-4819 > Project: Felix > Issue Type: Improvement > Components: Resolver > Reporter: Philippe Marschall > Attachments: ResolverImpl.java.patch > > > We did some profiling of the Felix resolver in our application and 16% were > spent in {{ArrayList#indexOf}} called by {{{{ArrayList#contains}}. It seems > that {{ResolverImpl}} uses {{java.util.ArrayList}} for data structures on > which it only calls {{#add}} and {{#contains}} with the latter being O(n). A > {{java.util.HashSet}} is the appropriate data structure for such this use > case. -- This message was sent by Atlassian JIRA (v6.3.4#6332)