Datenstrukturen: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung |
|||
| Zeile 253: | Zeile 253: | ||
Die Tests wurden mit folgenden Parametern durchgeführt: | Die Tests wurden mit folgenden Parametern durchgeführt: | ||
* Alle Messungen wurden mit <tt>System.Diagnostics.Stopwatch</tt> durchgeführt. | * erster Test: Elemente vom Typ Int32 | ||
* Es wurden 100.000 zufällige und disjunkte Int32 Werte erzeugt (zwischen 0 und Int32.Max) und in einem Array gespeichert. | ** Alle Messungen wurden mit <tt>System.Diagnostics.Stopwatch</tt> durchgeführt. | ||
* Diese | ** Es wurden 100.000 zufällige und disjunkte Werte erzeugt (zwischen 0 und Int32.Max) und in einem Array gespeichert. | ||
** Diese Werte wurden für die Tests Add (mit [[foreach]]), Remove (mit [[for]]), ElementAt (mit [[for]]) und Contains (mit [[for]]) aus diesem Array extrahiert. | |||
* zweiter Test: Elemente vom Typ Testobject (Objekt das ein Attribut <tt>value</tt> (Int32) besitzt und dieses für Vergleiche und Hashcode benutzt) | |||
** Alle Messungen wurden mit <tt>System.Diagnostics.Stopwatch</tt> durchgeführt. | |||
** Es wurden 100.000 zufällige und disjunkte Objekte erzeugt (mit <tt>value</tt> zwischen 0 und Int32.Max) und in einem Array gespeichert. | |||
** Diese Objekte wurden für die Tests Add (mit [[foreach]]), Remove (mit [[for]]), ElementAt (mit [[for]]) und Contains (mit [[for]]) aus diesem Array extrahiert. | |||
=== ein-elementige Datenstrukturen === | === Int32 (value-type) === | ||
==== ein-elementige Datenstrukturen ==== | |||
{| class="default" | {| class="default" | ||
| Zeile 366: | Zeile 372: | ||
|} | |} | ||
=== zwei-elementige Datenstrukturen === | ==== zwei-elementige Datenstrukturen ==== | ||
{| class="default" | {| class="default" | ||
| Zeile 408: | Zeile 414: | ||
| O(n) | | O(n) | ||
| class="close" | O(1) | | class="close" | O(1) | ||
|} [[Kategorie:Code-Beispiele]] | |} | ||
=== Testobject (reference-Typ) === | |||
==== ein-elementige Datenstrukturen ==== | |||
{| class="default" | |||
|- | |||
| class="blank" | <br> | |||
! colspan="6" | Laufzeiten | |||
| class="blank" | <br> | |||
|- | |||
| class="blank" | <br> | |||
! Add | |||
! Remove | |||
! ElementAt | |||
! Contains | |||
! Clear | |||
! Count | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/bb359438.aspx HashSet<T>] | |||
| 10ms / 4ms | |||
| 4ms | |||
| 48.240ms | |||
| 4ms | |||
| 0ms | |||
| class="close" | 0ms | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx LinkedList<T>] | |||
| 7ms | |||
| 28.883ms | |||
| 63.349ms | |||
| 58.970ms | |||
| 0ms | |||
| class="close" | 0ms | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx List<T>] | |||
| 2ms | |||
| 5848ms | |||
| 2ms | |||
| 61.034ms | |||
| 0ms | |||
| class="close" | 0ms | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/7977ey2c.aspx Queue<T>] | |||
| 2ms / 1ms | |||
| 1ms<ref name="removefirst">Diese Datenstruktur unterstützt nur das Entfernen des ersten Elements, d.h. in diesem Test wurde n-mal das erste Element entfernt.</ref><br> | |||
| 76.947ms<br> | |||
| 204.310ms<br> | |||
| 0ms<br> | |||
| class="close" | 0ms<br> | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/3278tedw.aspx Stack<T>] | |||
| 1ms <br> | |||
| 1ms<ref name="removefirst" /><br> | |||
| 53.155ms<br> | |||
| 192.108ms<br> | |||
| 0ms<br> | |||
| class="close" | 0ms<br> | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/ms668265.aspx SynchronizedCollection<T>] | |||
| 8ms / 7ms<br> | |||
| 101.157ms<br> | |||
| 9ms<br> | |||
| 59.859ms<br> | |||
| 0ms<br> | |||
| class="close" | 0ms<br> | |||
|} | |||
==== zwei-elementige Datenstrukturen ==== | |||
{| class="default" | |||
|- | |||
| class="blank" | | |||
! colspan="5" | Laufzeiten | |||
| class="blank" | | |||
|- | |||
| class="blank" | | |||
! Add | |||
! Remove | |||
! ContainsKey | |||
! Clear | |||
! Count | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/xfhwa508.aspx Dictionary<TKey, TValue>] | |||
| O(1)<br>O(n) wenn Count + 1 > Capacity | |||
| O(1) | |||
| O(1) | |||
| O(n) | |||
| class="close" | O(1) | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/f7fta44c.aspx SortedDictionary<TKey, TValue>] | |||
| O(log n) | |||
| O(log n) | |||
| O(log n) | |||
| O(n) | |||
| class="close" | O(1) | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx Hashtable] | |||
| O(1)<br>O(n) wenn Count + 1 > Capacity | |||
| O(1) | |||
| O(1) | |||
| O(n) | |||
| class="close" | O(1) | |||
|- | |||
! [http://msdn.microsoft.com/en-us/library/ms132319.aspx SortedList<TKey, TValue>] | |||
| O(n) | |||
| O(n) | |||
| O(log n) | |||
| O(n) | |||
| class="close" | O(1) | |||
|} | |||
[[Kategorie:Code-Beispiele]] | |||
== Referenzen == | == Referenzen == | ||
