Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 13376|Antwort: 3

[Quelle] .NET/C# Collection Type Query Benchmark

[Link kopieren]
Veröffentlicht am 07.03.2022 16:47:50 | | | |
Anforderungen: Sie müssen einen schreibgeschützten Sammlungstyp definieren, der die Sammlung nicht hinzufügt, löscht oder ändert, sondern nur die Sammlung abfragt. Wir hoffen esJe schneller die Anfrage, desto besser

Vergleiche der gemeinsamen Mengen



Bei der Beschreibung der Komplexität des Algorithmus werden üblicherweise o(1), o(n), o(logn), o(logn), o(nlogn) verwendet, um die zeitliche Komplexität des entsprechenden Algorithmus darzustellen, was die raumzeitliche Komplexität des Algorithmus darstellt. Er wird nicht nur verwendet, um zeitliche Komplexität darzustellen, sondern auch räumliche Komplexität.

O wird von einer Funktion in Klammern gefolgt, die die Beziehung zwischen der von einem Algorithmus verbrauchten Zeit/Raum und der gewachsenen Datenmenge anzeigt. wobei n die Menge der Eingabedaten darstellt.

Wenn zum Beispiel die Zeitkomplexität O(n) beträgt, bedeutet das, dass die Datenmenge mehrfach steigt und der Zeitaufwand ebenfalls um ein Vielfaches steigt. Zum Beispiel gängige Traversal-Algorithmen. Ein weiteres Beispiel ist die Zeitkomplexität O(n^2), was bedeutet, dass bei einer Erhöhung des Datenvolumens n-fach die Zeit benötigt, um n Quadratmal zuzunehmen, was eine höhere Zeitkomplexität als lineare ist. Zum Beispiel ist das Blasensortieren ein typischer O(n^2)-Algorithmus, der n × n Mal gescannt werden muss, um n Zahlen zu sortieren.

Ein weiteres Beispiel ist O(logn), wenn die Daten n-fach zugenommen werden, dauert es Zeit, die logn-mal zu erhöhen (die logitaritmische Zahl basiert hier auf 2, zum Beispiel erhöht sich die benötigte Zeit um das 256-fache, was niedriger ist als linear). Die binäre Suche ist der Algorithmus von O (logn), der jedes Mal die Hälfte der Möglichkeiten ausschließt, wenn sie gefunden wird, und die Suche in 256 Daten muss nur 8 Mal gefunden werden, um das Ziel zu finden.

O(nlogn) ist dasselbe, das heißt, n multipliziert mit logn; wenn die Daten um das 256-fache vergrößert werden, erhöht sich der Zeitaufwand um 256 * 8 = 2048-fach. Diese Komplexität ist höher als die Linearität unterhalb des Quadrats. Merge and Sort ist die Zeitkomplexität von O(nlogn).

O(1) ist die niedrigste raumzeitliche Komplexität, das heißt, die benötigte Zeit/Raum ist unabhängig von der Größe der Eingabedaten; egal wie oft die Eingabedaten vergrößert werden, bleibt die benötigte Zeit/Fläche unverändert. Der Hashing-Algorithmus ist eine typische O(1)-Zeitkomplexität, die das Ziel nach einer einzigen Berechnung (unabhängig von Konflikten) finden kann, egal wie groß die Daten sind.

Dieser Artikel verwendet das BenchmarkDotNet-PaarList、HashSet、SortedSet、DictionaryAnfrage zum Benchmarking siehe Folgendes:

.NET/C# verwendet BenchmarkDotNet, um die Code-Performance zu testen
https://www.itsvse.com/thread-9576-1-1.html

.NET/C# Reflexions-, Emit- und Ausdrucks-Leistungstests
https://www.itsvse.com/thread-9598-1-1.html
Der Code lautet wie folgt:

Testergebnis: Einen Schlüssel in einem Wörterbuch oder HashSet zu finden ist viel schneller, als in einer Liste und SortedSet nachzuschlagen. Die Zeitkomplexität der Dictionary- und HashSet-Algorithmen beträgt O(1), und um Speicher zu sparen, ist der Wert des Wörterbuchs für uns nutzlos, daher habe ich trotzdem HashSet-Speicher gewählt.







Vorhergehend:[Practice] IIS 10 Access Set IP-Blacklist
Nächster:ASP.NET Core (XI) Endpunkt-Route fügt Middleware hinzu, um alle DI-Dienste anzuzeigen
Veröffentlicht am 07.03.2022 23:09:48 |
Komm, um es wieder zu lernen.
 Vermieter| Veröffentlicht am 09.03.2022 09:55:12 |
HashSet-Test


 Vermieter| Veröffentlicht am 24.02.2024 17:45:14 |
.NET/C# Collection List, HashSet, um zu bestimmen, ob ein Element einen Benchmark hat
https://www.itsvse.com/thread-10735-1-1.html
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com