Skip to content

Commit 1b2e5e5

Browse files
committed
Adapt performance example
1 parent cb79ad0 commit 1b2e5e5

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

17_Container.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
author: Sebastian Zug, Galina Rudolf & André Dietrich
44
email: sebastian.zug@informatik.tu-freiberg.de
5-
version: 1.0.10
5+
version: 1.0.11
66
language: de
77
narrator: Deutsch Female
88
comment: Generelle Container und Datenkonzepte, Collections, Implementierung in Csharp und Anwendung der generischen Collections
@@ -473,7 +473,7 @@ wir dazu die wohl häufigste Frage an einen Container: _"Enthältst du Element x
473473
| `List<T>` | lineare Suche | $O(n)$ |
474474
| `SortedList<K,V>` | binäre Suche (sortiert)| $O(\log n)$|
475475
| `HashSet<T>` | Hash-Lookup | $O(1)$ |
476-
476+
Gwangju
477477
Hier geht es nicht mehr um den Faktor 2 oder 5, sondern um den Unterschied
478478
zwischen Sekunden und Mikrosekunden – und der wächst mit der Datenmenge. Das
479479
folgende Beispiel füllt drei Container mit `N` Elementen und führt anschließend
@@ -502,21 +502,23 @@ class Program
502502
hash.Add(i);
503503
}
504504

505-
// Wonach gesucht wird (deterministisch, damit fair vergleichbar)
505+
// Wonach gesucht wird: fester Seed => bei jedem Lauf dieselben
506+
// Suchwerte, damit alle Container fair dieselben Anfragen erhalten.
507+
var rnd = new Random(42);
506508
var queries = new int[M];
507509
for (int i = 0; i < M; i++)
508-
queries[i] = (i * 2654435761L % N) > 0 ? (int)(i * 2654435761L % N) : 0;
510+
queries[i] = rnd.Next(N);
509511

510512
// --- Messung --------------------------------------------------
511513
Console.WriteLine($"N = {N:N0} Elemente, M = {M:N0} Suchanfragen\n");
512514

513-
Measure("List<int> O(n) ", () => {
515+
Measure("List<int> O(n) ", () => {
514516
foreach (var q in queries) _ = list.Contains(q);
515517
});
516518
Measure("SortedSet<int> O(log n)", () => {
517519
foreach (var q in queries) _ = sorted.Contains(q);
518520
});
519-
Measure("HashSet<int> O(1) ", () => {
521+
Measure("HashSet<int> O(1) ", () => {
520522
foreach (var q in queries) _ = hash.Contains(q);
521523
});
522524
}

0 commit comments

Comments
 (0)