Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
1.3
-
None
-
None
-
None
-
JRockit R27 (Java 6)
Description
Attached is modified version of LRUCache where
1. map = new LinkedHashMap(initialSize, 0.75f, false) - so that "reordering"/true (performance bottleneck of LRU) is replaced to "insertion-order"/false (so that it became FIFO)
2. Almost all (absolutely unneccessary) synchronized statements commented out
See discussion at http://www.nabble.com/LRUCache---synchronized%21--td16439831.html
Performance metrics (taken from SOLR Admin):
LRU
Requests: 7638
Average Time-Per-Request: 15300
Average Request-per-Second: 0.06
FIFO:
Requests: 3355
Average Time-Per-Request: 1610
Average Request-per-Second: 0.11
Performance increased 9 times which roughly corresponds to a number of CPU in a system, http://www.tokenizer.org/ (Shopping Search Engine at Tokenizer.org)
Current number of documents: 7494689
name: filterCache
class: org.apache.solr.search.LRUCache
version: 1.0
description: LRU Cache(maxSize=10000000, initialSize=1000)
stats: lookups : 15966954582
hits : 16391851546
hitratio : 0.102
inserts : 4246120
evictions : 0
size : 2668705
cumulative_lookups : 16415839763
cumulative_hits : 16411608101
cumulative_hitratio : 0.99
cumulative_inserts : 4246246
cumulative_evictions : 0
Thanks