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

Robert Muir commented on LUCENE-8005:
-------------------------------------

OK, but I think the issue should be restated (not avoid reflection, just avoid 
Class.getSimpleName).

If we care about this being faster we should change to use Class.getName which 
becomes the speed of an ordinary getter: 
http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/java.base/share/classes/java/lang/Class.java#l772

In our case here we don't deal with arrays so it should be very easy. I greatly 
prefer this to adding new abstractions (Lucene has too many of those).

> Avoid Reflection in UsageTrackingQueryCachingPolicy
> ---------------------------------------------------
>
>                 Key: LUCENE-8005
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8005
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Scott Somerville
>         Attachments: LUCENE-8005.patch
>
>
> By profiling an Elasticsearch cluster, I found the private method 
> UsageTrackingQueryCachingPolicy.isPointQuery to be quite expensive due to the 
> clazz.getSimpleName() call.
> Here is an excerpt from hot_threads:
> {noformat}
> java.lang.Class.getEnclosingMethod0(Native Method)
>        java.lang.Class.getEnclosingMethodInfo(Class.java:1072)
>        java.lang.Class.getEnclosingClass(Class.java:1272)
>        java.lang.Class.getSimpleBinaryName(Class.java:1443)
>        java.lang.Class.getSimpleName(Class.java:1309)
>        
> org.apache.lucene.search.UsageTrackingQueryCachingPolicy.isPointQuery(UsageTrackingQueryCachingPolicy.java:39)
>        
> org.apache.lucene.search.UsageTrackingQueryCachingPolicy.isCostly(UsageTrackingQueryCachingPolicy.java:54)
>        
> org.apache.lucene.search.UsageTrackingQueryCachingPolicy.minFrequencyToCache(UsageTrackingQueryCachingPolicy.java:121)
>        
> org.apache.lucene.search.UsageTrackingQueryCachingPolicy.shouldCache(UsageTrackingQueryCachingPolicy.java:179)
>        
> org.elasticsearch.index.shard.ElasticsearchQueryCachingPolicy.shouldCache(ElasticsearchQueryCachingPolicy.java:53)
>        
> org.apache.lucene.search.LRUQueryCache$CachingWrapperWeight.bulkScorer(LRUQueryCache.java:806)
>        
> org.elasticsearch.indices.IndicesQueryCache$CachingWeightWrapper.bulkScorer(IndicesQueryCache.java:168)
>        org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:665)
>        org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:472)
>        org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:388)
>        org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:108)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to