Digy wrote:
SortedDictionary does not have a getter with index (like Data[Index]). In a SortedList, Data[0] is always the LRU item.
I didn't find any use of index access for SortedList (TimeStamps) except of : if (Data.Count > Capacity)
               {
                   long key = TimeStamps.Keys[0];
                   Data.Remove(TimeStamps[key]);
                   TimeStamps.RemoveAt(0); <-------------
               }

In case of  SortedDictionary it can be replaced by:
               if (Data.Count > Capacity)
               {
                   long key = TimeStamps.Keys[0];
                   Data.Remove(TimeStamps[key]);
                   TimeStamps.Remove(key);
               }

Am I missed something?

---
Andrei
I got much more better results with RedBlackCS.RedBlack ( 
http://www.codeproject.com/KB/recipes/redblackcs.aspx ) but it is huge and 
there may be licensing problems.


DIGY.


-----Original Message-----
From: [email protected] [mailto:[email protected]] Sent: Tuesday, August 18, 2009 4:51 PM
To: [email protected]
Subject: Re: [jira] Updated: (LUCENENET-190) 2.4.0 Performance in 
TermInfosReader term caching (New implementation of SimpleLRUCache)

SimpleLRUCache_LUCENENET_190 uses SortedList<long, object> collection.

Performance of SortedList (see http://msdn.microsoft.com/en-us/library/ms132339.aspx): 1) Add method is an O(n) operation for unsorted data. It is an O(log n) operation if the new element is added at the end of the list. If insertion causes a resize, the operation is O(n).
2) Remove method method is an O(n) operation
3) RemoveAt method is an O(n) operation 4) Keys property is an O(1) operation

Why not to use SortedDictionary<>? It has better performance for Remove and Add:

1) Add method is an O(log n) operation

2) Remove method is an O(log n) operation

3) Keys property is an O(1) operation




<http://www.garweb.ru>

Reply via email to