[ 
https://issues.apache.org/jira/browse/FELIX-4029?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13638419#comment-13638419
 ] 

Richard S. Hall commented on FELIX-4029:
----------------------------------------

Actually, you are making an assumption that isn't true. There is more than one 
way to skin a cat and directly looking into a map is not the only way to 
optimize service reference lookup. The Felix framework filter implementation 
supports arbitrary attribute indices. The capability set used by the service 
registry is indexed by objectClass so any filter that evaluates against with 
will automatically hit this index.

It isn't smart enough to do query rewriting, though, so you are best to put 
indexed attributes toward the front of your query, but in this particular 
example the objectClass is added as the first clause in a conjunction so it 
will hit the index right away.
                
> Improve use of BundleContext.getServiceReferences() API in ServiceTracker
> -------------------------------------------------------------------------
>
>                 Key: FELIX-4029
>                 URL: https://issues.apache.org/jira/browse/FELIX-4029
>             Project: Felix
>          Issue Type: Improvement
>          Components: Dependency Manager
>    Affects Versions: dependencymanager-3.1.0
>            Reporter: Herko ter Horst
>              Labels: performance
>
> The org.apache.felix.dm.tracker.ServiceTracker implementation currently does 
> not take full advantage of the BundleContext.getServiceReferences() API when 
> retrieving initial service references on "open".
> The getServiceReferences() method accepts a class name and a filter. The 
> ServiceTracker accepts either one (but not both). However, it transforms the 
> class name into a filter and calls getServiceReferences() with only the 
> filter.
> This prevents BundleContext implementations from taking advantage of the 
> class name parameter. At least one implementation (Equinox) indexes service 
> references by their service interface. The fact that the class name is not 
> available leads to reduced performance in this case.

--
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