| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583 |
- 2007-03-27 Alan McGovern <[email protected]>
- * List.cs: Optimized several methods to increase performance
- 2007-03-21 Juraj Skripsky <[email protected]>
- * List.cs (FindAllStackBits): Small optimization to the new code.
- Built resulting List<T> directly as an array, wrap it in a List<T>
- afterwards. Stop the filling of the result array as soon as all
- matching items have been processed.
- 2007-03-20 Juan Cristóbal Olivares <[email protected]>
- * List.cs (FindAll): Optimize FindAll using a bitmask to determine
- the number of positive matches, this increases the performance in
- all cases below 10,000,000 elements extensively:
- 100 elements:
- old method: 00:00:00.0126610 (26x)
- stackalloc bit method: 00:00:00.0004750 (1x)
- array bit method: 00:00:00.0010700 (2x)
- heap bit method: 00:00:00.0038830 (8x)
- 1,000 elements:
- old method: 00:00:00.0139250 (24x)
- stackalloc bit method: 00:00:00.0005670 (1x)
- array bit method: 00:00:00.0010890 (2x)
- heap bit method: 00:00:00.0034920 (6x)
- 10,000 elements:
- old method: 00:00:00.0136110 (12x)
- stackalloc bit method: 00:00:00.0011240 (1x)
- array bit method: 00:00:00.0016450 (1.4x)
- heap bit method: 00:00:00.0043110 (3x)
- 50,000 elements:
- old method: 00:00:00.0175970 (3x)
- stackalloc bit method: 00:00:00.0085630 (1.5x)
- array bit method: 00:00:00.0055010 (1x)
- heap bit method: 00:00:00.0099590 (1.8x)
- 100,000 elements:
- old method: 00:00:00.0210330 (2x)
- array bit method: 00:00:00.0100430 (1x)
- heap bit method: 00:00:00.0154150 (1.5x)
- 1,000,000 elements:
- old method: 00:00:00.1243730 (1.2x)
- array bit method: 00:00:00.0973110 (1x)
- heap bit method: 00:00:00.1285650 (1.3x)
- 10,000,000 elements:
- old method: 00:00:00.9252570 (1x)
- array bit method: 00:00:00.9632300 ( 1.05x)
- heap bit method: 00:00:01.1098490 (1.20x)
- 2007-03-08 David Mitchell <[email protected]>
- * List.cs: Fix the case where List.set_Item(int index) throws
- inappropriate exception when index is equal to List.Count
- List.IndexOf(object item) and IList.Contains(object item) throw
- exceptions when given invalid types.
- IList.Add(object item) throws InvalidCastException when item is
- not of the correct type.
- 2007-03-08 Gert Driesen <[email protected]>
- * Comparer.cs: Renamed IComparableOfTComparer<T> to GenericComparer<T>
- to fix binary serialization compatibility with MS.
- 2007-03-05 David Mitchell <[email protected]>
- * Dictionary.cs: An instance of Dictionary<TKey,TValue> is
- supposed to throw a KeyNotFoundException when
- the user attempts to retrieve the value associated with a key that
- is not in the dictionary.
- On the other hand, an instance of IDictionary is supposed to
- return null in similar circumstances.
- 2007-03-05 David Mitchell <[email protected]>
- * List.cs: Fix InsertRange bug (80930).
- 2006-09-15 Gert Driesen <[email protected]>
- * List.cs: Fixed binary serialization compatibility with MS.NET.
- Increment version whenever _items is modified; this fixes version
- checks in Enumerator.
- 2006-09-06 Zoltan Varga <[email protected]>
- * Dictionary.cs: Speed up get_Item/set_Item/GetPrev () a bit. Increase capacity
- specified by the user so 'capacity' elements can really be added without resizing.
- 2006-07-12 Zoltan Varga <[email protected]>
- * Dictionary.cs: Swap order of parameters to cmp.Equals () to improve
- compatibility with MS.NET and strange Equals () implementations.
- 2006-05-17 Kazuki Oikawa <[email protected]>
- * List.cs : implemented Sort(Comparison <T>).
- 2006-05-08 Atsushi Enomoto <[email protected]>
- * List.cs : use proper comparer in Contains(), IndexOf() and
- LastIndexOf(). Patch by Kazuki Oikawa. Fixed bug #77277.
- 2006-03-16 Ankit Jain <[email protected]>
- * List.cs (CheckIndex): Check for -ve indices and allow index == size.
- (Insert): Use CheckIndex.
- 2006-03-12 Zoltan Varga <[email protected]>
- * List.cs: Applied patch from <[email protected]>. Fixes #77504.
- 2006-02-10 Martin Baulig <[email protected]>
- * Comparer.cs
- (IComparableOfTComparer): `T' must implement `IComparable<T>' and
- not `IComparable'.
- Tue Jan 24 18:22:54 CET 2006 Paolo Molaro <[email protected]>
- * Dictionary.cs: avoid long reminder operations.
- 2006-01-23 Raja R Harinath <[email protected]>
- Speed up remove. Use 'dict[k]=v' as a self-tuning hint.
- * Dictionary.cs (GetSlot): Move data-structure traversal to ...
- (GetPrev): ... this. Returns the slot prior to the place we're
- looking for, or null if that place is the head of the chain.
- (Remove): Use it.
- (this.set): Use it. Implement move-to-front on set.
- * Dictionary.cs (ToTKey, ToTValue): New helpers to convert from
- type 'object'.
- (IDictionary.this, IDictionary.Add): Use them.
- (IDictionary.Contains, IDictionary.Remove): If the types don't
- match, do nothing.
- 2006-01-19 Raja R Harinath <[email protected]>
- Fix to pass new nunit tests.
- * Dictionary.cs (ShimEnumerator): New class. Implement the
- requirement that ((IDictionary) foo).GetEnumerator ().Current has
- type DictionaryEntry.
- (IDictionary.GetEnumerator): Use ShimEnumerator.
- (Enumerator.Current): Now has type KeyValuePair<TKey, TValue>.
- (Enumerator.MoveNext): Use VerifyState.
- (Enumerator.VerifyState): Move validation of 'current' field to ...
- (Enumerator.CurrentSlot): ... this.
- (Enumerator.Current, Enumerator.IDictionaryEnumerator.Entry):
- Use CurrentSlot.
- (CopyTo, ICollection.CopyTo): Use subtle reasoning to replace a
- '>=' with a '>'. Don't throw an ArgumentException when
- index==array.Length && Count==0.
- (KeyCollection.CopyTo, ValueCollection.CopyTo): Likewise, and thus
- obviate the need to check (dictionary.Count == 0).
- 2005-12-20 Sebastien Pouliot <[email protected]>
- * List.cs: Applied Atsushi's patch for Sort (bug 76361) now that the
- generic versions of Array.Sort are implemented.
- 2005-12-19 Sebastien Pouliot <[email protected]>
- * Dictionary.cs: Added [Serializable] attribute to both inner
- Enumerator struct in Key and Value inner collection classes.
- * EqualityComparer.cs: Added missing IEqualityComparer interface.
- * List.cs: Added [Serializable] attribute to both inner Enumerator
- struct.
- 2005-12-19 Sebastien Pouliot <[email protected]>
-
- * Dictionary.cs: Fixed ICollection.CopyTo to use DictionaryEntry. Fixed
- Key and Value CopyTo not to throw exception if the dictionary is empty
- (fix bug #77019).
- * List.cs: Fix exception reporting to match MS behaviour (2.0 final).
- 2005-11-19 Zoltan Varga <[email protected]>
- * KeyNotFoundException.cs: Add default message.
- 2005-09-18 Miguel de Icaza <[email protected]>
- * Dictionary.cs: Change style for internal fields.
- If the capacity is zero, set the capacity to our default size as 0
- is an allowed parameter in .NET
- 2005-08-10 Kamil Skalski <[email protected]>
- * KeyValuePair.cs, Dictionary.cs: Change Key and Value to properties to match
- .NET 2.0 July CTP. Update its use in Dictionary, since now we
- cannot write to them.
-
- 2005-07-10 Kamil Skalski <[email protected]>
- * Comparer.cs, EqualityComparer.cs: Use MakeGenericType instead of BindGenericParameters.
- 2005-06-27 Raja R Harinath <[email protected]>
- Introduce some thread-safety by removing the modify-on-read
- move-to-front heuristic.
- * Dictionary.cs (_enumeratorGeneration, _enumerators): Remove.
- (Count): Add internal property set. Invalidate enumerators when
- Count is changed. Change all references of _usedSlots to Count.
- (this): Invalidate enumerators when the value of some slot is
- changed, even if the layout of the data-structure isn't modified.
- (DoHash): Remove null-key check. All codepaths leading to this
- function already have the check.
- (GetSlot): Remove move-to-front heuristic.
- (Remove): Update.
- 2005-06-24 Martin Baulig <[email protected]>
- * IDictionary.cs: Use the same type parameter names than on MS.
- * IDictionary.cs, Dictionary.cs: We don't need the `CLSCompliant'
- attribute here.
- 2005-06-23 Martin Baulig <[email protected]>
- * *.cs: Removed the `[ComVisible(false)]' attributes everywhere.
- 2005-06-22 Raja R Harinath <[email protected]>
- * Dictionary.cs (_generation, _enumeratorGeneration, _enumerators):
- New fields to implement fail-fast semantics. All code that
- modifies the table increment _generation.
- (GetSlot): Use _hcp to compare keys. Return the slot containing
- the key, rather than the index. Avoid move-to-front heuristic
- when there's an enumerator coursing through the table.
- (this, Add, TryGetValue, ContainsKey, Remove): Update to change.
- (Enumerator.Enumerator): Save the generation of the dictionary.
- (Enumerator.Dispose): Inform dictionary that the enumerator is no more.
- (Enumerator.MoveNext, Enumerator.VerifyState): Fail if the
- dictionary has been modified.
- 2005-06-20 David waite <[email protected]>
- * List.cs : substantial changes and optimizations
- (AddCollection, AddEnumerable): new internal specializations of AddRange
- (AsReadOnly): returns specific IList<T> to match ms.net 2.0b2 api.
- (Clear): reset size to zero on clear
- (ConvertAll): catch null converter, use Add to prevent OutOfBounds
- exception
- (FindAll, FindIndex, FindLast, FindLastIndex, RemoveAll, TrueForAll):
- check for null match
- (FindLastIndex): correct index parameters based on ms.net 2005b2 behavior
- (ForEach): catch null action
- (CheckIndex): new internal function similar to CheckRange for functions
- which only provide a starting index
- (InsertCollection, InsertEnumerable): new internal specializations of
- InsertRange
- (ReadOnlyList): removed, ReadOnlyCollection in
- System.Collections.ObjectModel is used instead now
-
- 2005-06-16 David Waite <[email protected]>
- * Dictionary.cs (EnumerationMode): Remove.
- (Enumerator): Remove return type flag - legacy return is expected to
- always return a DictionaryEntry
- (Enumerator): Make constructor internal, it is not public on ms.net
- beta 2
- (VerifyState): Added method to check state preconditions and throw
- appropriate exceptions.
- (KeyCollection,ValueCollection): Mark sealed to match ms.net beta 2
- (KeyCollection.Enumerator._hostEnumerator): make exact struct type,
- rather than boxing and using by interface
- (KeyCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
- (ValueCollection.Enumerator._hostEnumerator): make exact struct type,
- rather than boxing and using by interface
- (ValueCollection.Enumerator.Dispose): Call _hostEnumerator.Dispose.
- * EqualityComparer.cs (DefaultComparer, IEquatableOfTEqualityComparer):
- Mark as serializable.
- 2005-06-16 Raja R Harinath <[email protected]>
- * Dictionary.cs (GetKeys, GetValues): Remove.
- (SetThreshold): New function to calculate the resize threshold.
- (CopyTo): Don't use foreach syntax.
- (ContainsValue): Likewise. Use default equality comparer of the
- value type.
- (GetObjectData): Use CopyTo to copy into temporary array. Don't
- save redundant _usedSlots and _threshold.
- (OnDeserialization): Rewrite.
- (ICollection<>.CopyTo): Forward to CopyTo.
- (Enumerator._nextIndex): Rename to from _index.
- (Enumerator._next, Enumerator.FixNext): Remove.
- (Enumerator.Current): Rewrite to avoid need for _next.
- (Enumerator.IEnumerator.Reset): Update.
- (KeyCollection): Is also IEnumerable<TKey> and IEnumerable.
- Update methods to conform to standard.
- (KeyCollection.GetEnumerator): Restore. Return the correct type.
- (KeyCollection.Enumerator): Rename from KeyEnumerator. Simple
- wrapper that forwards to Dictionary<,>.Enumerator.
- (ValueCollection): Likewise.
- 2005-06-12 David Waite <[email protected]>
- * IKeyComparer.cs: removed
- * KeyValuePair.cs: add same-style ToString as ms.net Beta2 impl,
- make Serializable, use correct field names.
- * Dictionary.cs: Miscelaneus clean-ups, added serialization
- support, use Hashtable prime functions
- 2005-06-12 Ben Maurer <[email protected]>
- * Comparer.cs, EqualityComparer.cs: Important performance hack:
- make sure that we don't box stuff and do reflection on every
- comparison. We use reflection at cctor time rather than on every
- request.
- 2005-06-09 Raja R Harinath <[email protected]>
- Simplify Enumerator.MoveNext to make it "obviously correct", rather
- than require subtle reasoning about the state of various variables.
- * Dictionary.cs (Enumerator._isValid): Remove. Replace all uses
- with "_current == null".
- (Enumerator._validNodeVisited): Remove.
- (Enumerator._next): New. Holds the the next position.
- (Enumerator.FixNest): New helper function that ensures that _next
- has the right value.
- (Enumerator.MoveNext): Simplify. Now, copies _next to _current
- and advances _next if possible.
- 2005-06-08 Martin Baulig <[email protected]>
- * Dictionary.cs (Dictionary.KeyEnumerator): Removed the public
- GetEnumerator() function since it's returning the wrong type.
- (Dictionary.ValueEnumerator): Likewise. Fix #75073.
- 2005-06-08 Ankit Jain <[email protected]>
- * Dictionary.cs (Dictionary<TKey, TValue>.MoveNext): Allow traversal of chain in last slot
- of the table. Fixes #75168.
- 2005-06-04 Ben Maurer <[email protected]>
- * *.cs: 2.0 api fixups
- 2005-05-26 Miguel de Icaza <[email protected]>
- * Dictionary.cs: Remove the `Hash' name from the Dictionary
- internal classes, make them public.
- 2005-05-26 Zoltan Varga <[email protected]>
- * Dictionary.cs: Fix a warning.
- * IDictionary.cs: Add missing TryGetValue method.
- 2005-05-19 Geoff Norton <[email protected]>
- * List.cs (Insert): Resize the array before the shift if needed
- 2005-05-18 Miguel de Icaza <[email protected]>
- * List.cs (GetRange): Implement.
- Do not do lazy loading of data. Not worth adding an
- extra check, and not worth the bugs.
- This decision wont be discussed until: a) a full List regression
- test suite exists and b) performance benchmarks are created. (b)
- depends on (a) or the argument wont even be heard.
- 2005-05-13 Atsushi Enomoto <[email protected]>
- * Queue.cs, Stack.cs: moved to System.dll
- 2005-05-06 Martin Baulig <[email protected]>
- * *.cs: Add CLSCompliant(true) where missing.
- 2005-05-06 Zoltan Varga <[email protected]>
- * *.cs: Remove CLSCompliant(false) attributes.
- 2005-05-05 Zoltan Varga <[email protected]>
- * List.cs: Applied patch from Mart Roosmaa ([email protected]).
- Fix Insert method. Fixes #74824.
- 2005-04-29 Martin Baulig <[email protected]>
- Reflect latest spec changes.
- * IEnumerable.cs (IEnumerable<T>): Implement IEnumerable.
- * IEnumerator.cs (IEnumerator<T>): Implement IEnumerator.
- 2005-04-29 Raja R Harinath <[email protected]>
- Remove FIXME.
- * Dictionary.cs (Slot<K,V>): Move to ...
- (Dictionary<K,V>.Slot): ... here.
- 2005-04-28 Martin Baulig <[email protected]>
- * Dictionary.cs, Queue.cs, Stack.cs, List.cs, Comparer.cs: Don't
- duplicate type parameters in the nested classes.
- 2005-04-20 Zoltan Varga <[email protected]>
- * List.cs: Fix ToArray () method. Fixes #74675.
- 2005-04-04 Raja R Harinath <[email protected]>
- * Dictionary.cs: Update to draft of Feb 27. Add some argument checks.
- (GetSlot): Don't throw KeyNotFoundException. Unify all list
- traversals in here. Move found key to head of chain, and return
- the index of the chain suitable for/containing the key.
- (Item, Add, Remove): Simplify, and remove FIXMEs.
- (Resize): Reuse linked list nodes from old table.
- (Dictionary.CopyTo, HashKeyCollection.CopyTo, HashValueCollection.CopyTo):
- Add some argument checks.
- 2005-04-02 Ben Maurer <[email protected]>
- * Dictionary.cs: Real impl.
- 2005-02-21 Martin Baulig <[email protected]>
- * IComparer.cs: Reverted the last change here, Equals() and
- GetHashCode() have been removed a long time ago.
- 2005-02-21 Kazuki Oikawa <[email protected]>
- * IComparer.cs, IDictionary.cs: Corrected the wrong declaration.
- 2005-02-11 Carlos Alberto Cortez <[email protected]>
- * List.cs: Added internal ReadOnlyCollection class,
- which is a wrapper for a read only IList<T> version of the List<T>.
- Used in AsReadOnly () method.
-
- 2005-02-07 Ben Maurer <[email protected]>
- * List.cs (CheckRange): Comparison error. Duh!
- (Shift): really deal with neg. delta. Also, adjust the `size'.
- Based on a patch from Marc Denty ([email protected]).
- Fixes #72258.
- 2005-01-29 Ben Maurer <[email protected]>
- * Queue.cs: `duh' bugs.
- 2004-12-27 Ben Maurer <[email protected]>
- * Stack.cs: Stupid bug fixes.
- * List.cs: My new (mostly untested ;-) impl of List
- <T>. Implements most of the API.
- 2004-12-26 Ben Maurer <[email protected]>
- * Queue.cs: New, non-linked-list based impl.
- 2004-11-29 Ben Maurer <[email protected]>
- * Comparer.cs: Update this class.
- 2004-11-25 Carlos Alberto Cortez <[email protected]>
- * List.cs: Enumerator changed to behave like the MS impl.
-
- 2004-11-25 Ben Maurer <[email protected]>
- * Stack.cs: New, list based impl. Waiting for some gmcs fixes.
- 2004-11-10 Martin Baulig <[email protected]>
- * IDictionary.cs (IDictionary): `IsReadOnly' and `Clear' are
- inherited from ICollection.
- 2004-09-20 Gert Driesen <[email protected]>
- * ReadOnlyCollection.cs: Moved to System assembly
- * Collection.cs: Moved to System assembly
- 2004-09-07 Carlos Alberto Cortez <[email protected]>
- * ReadOnlyCollection.cs: New file and changes to
- Collection.cs tu support it.
- 2004-09-05 Marek Safar <[email protected]>
- * Dictionary.cs: Added new file (no implementation).
- 2004-09-03 Carlos Alberto Cortez <[email protected]>
- * Collection.cs: Small improvements related to
- style, resizing, and type checking.
- 2004-09-01 Carlos Alberto Cortez <[email protected]>
- * Collection.cs: New file.
- 2004-08-04 Martin Baulig <[email protected]>
- * List.cs (List<T>.Enumerator): Made this a struct.
- (List<T>.GetEnumerator): The public method now returns the
- `Enumerator' struct.
- 2004-08-02 Martin Baulig <[email protected]>
- Started to do some API review.
- * ICollection.cs (ICollection<T>): Added IsReadOnly, Add, Clear,
- Contains and Remove.
- * IList.cs (IList<T>): Removed Add, Clear, Constains, Remove,
- IsReadOnly and IsFixedSize.
- 2004-08-02 Martin Baulig <[email protected]>
- * IList.cs (IList.Add): Changed return type to void.
- * List.cs (List.Add): Likewise.
- 2004-07-16 Martin Baulig <[email protected]>
- * IComparable.cs: Removed, it's in System.
- 2004-07-12 Duncan Mak <[email protected]>
- * KeyNotFoundException.cs: Added.
- 2004-06-18 Ben Maurer <[email protected]>
- * Comparer.cs: v2 impl. Some workarounds for gmcs are enabled.
- 2004-05-26 Sebastien Pouliot <[email protected]>
- * Queue.cs: Fixed possible integer overflow in CopyTo methods.
- * Stack.cs: Fixed possible integer overflow in CopyTo methods.
- 2004-03-13 Martin Baulig <[email protected]>
- * Stack.cs, Queue.cs, List.cs: Implement the non-generic interfaces.
- 2004-03-11 Martin Baulig <[email protected]>
- * List.cs: New file.
- 2004-03-11 Martin Baulig <[email protected]>
- * Stack.cs, Queue.cs: Just use `Node' for the nested class, not
- `Node<T>' (which would create another type parameter `T'
- overriding `T' from the outer class).
- 2004-02-23 Martin Baulig <[email protected]>
- * Stack.cs, Queue.cs: New files. Hmm, looks like I forgot to add
- them to CVS; they're already on my hard disk since December or so.
- 2003-12-08 Martin Baulig <[email protected]>
- * *.cs: require GENERICS.
- 2003-11-08 Ben Maurer <[email protected]>
- * *.cs: require NET_2_0 and GENERICS
- 2003-11-07 Ben Maurer <[email protected]>
- * IComparable.cs, IComparer.cs, IDictionary.cs, IKeyComparer.cs, KeyValuePair.cs
- Added.
- 2003-11-06 Martin Baulig <[email protected]>
- * ICollection.cs, IList.cs, IEnumerator.cs, IEnumerable.cs:
- Started to implement the System.Collections.Generic classes.
|