boicehuang commented on code in PR #13306: URL: https://github.com/apache/lucene/pull/13306#discussion_r1580286445
########## lucene/core/src/java/org/apache/lucene/search/LRUQueryCache.java: ########## @@ -265,7 +269,6 @@ boolean requiresEviction() { } CacheAndCount get(Query key, IndexReader.CacheHelper cacheHelper) { - assert lock.isHeldByCurrentThread(); assert key instanceof BoostQuery == false; assert key instanceof ConstantScoreQuery == false; final IndexReader.CacheKey readerKey = cacheHelper.getKey(); Review Comment: Yes, So I want to try my best to optimize this neck. I think `uniqueQueries` should be `Collections.synchronizedMap` to achieve LRU expiration, but `cache` does not need order and can be `ConcurrentHashMap` to improve performance. doc count | field cardinality | query point | baseline QPS | candidate QPS | diff percentage | diff -- | -- | -- | -- | -- | -- | -- 30000000 | 10 | 1 | 2481 | 5102 | 105.6% | 30000000 | 10 | 1 | 2481 | 4843 | 95.2% | using `LongAdder` 30000000 | 10 | 1 | 2481 | 3751 | 51%| `uniqueQueries` and `cache` to be `Collections.synchronizedMap`. using `LongAdder` 30000000 | 10 | 1 | 2481 | 4571 | 84% | `uniqueQueries` to be`Collections.synchronizedMap`, `cache` to be`ConcurrentHashMap`. using `LongAdder` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org