Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 13376|Odpoveď: 3

[Zdroj] .NET/C# typ dotazu na dotazy .NET/C#

[Kopírovať odkaz]
Zverejnené 7. 3. 2022 16:47:50 | | | |
Požiadavky: Musíte definovať typ kolekcie len na čítanie, ktorý nebude pridávať, mazať ani meniť kolekciu, ale iba dotazovať kolekciu. Dúfame, žeČím rýchlejší dotaz, tým lepšie

Porovnania spoločných množín



Pri popise zložitosti algoritmu sa bežne používajú o(1), o(n), o(logn), o(logn), o(logn), o(nlogn) na vyjadrenie časovej zložitosti príslušného algoritmu, čo je vyjadrenie priestorovo-časovej zložitosti algoritmu. Používa sa nielen na reprezentáciu časovej zložitosti, ale aj na reprezentáciu priestorovej zložitosti.

O nasleduje funkcia v zátvorke, ktorá označuje vzťah medzi časom/priestorom spotrebovaným algoritmom a množstvom vypestovaných dát. kde n predstavuje množstvo vstupných údajov.

Napríklad, ak je časová zložitosť O(n), znamená to, že množstvo dát sa niekoľkonásobne zvýši a časová spotreba tiež niekoľkonásobne. Napríklad bežné algoritmy prechodu. Ďalším príkladom je časová zložitosť O(n^2), čo znamená, že keď sa objem dát zvýši n-násobne, trvá čas, kým sa zvýši n štvorcových krát, čo je vyššia časová zložitosť ako lineárna. Napríklad triedenie bublín je typický O(n^2) algoritmus, ktorý je potrebné prehľadať n × n krát, aby sa zoradilo n čísel.

Ďalším príkladom je O(logn), keď sa dáta zvýšia n-násobne, trvá čas, kým sa zväčšia logn-časy (logaritmis je tu založený na 2, napríklad keď sa dáta zvýšia o 256-násobok, potrebný čas sa zvýši len 8-násobne, čo je menej ako lineárne). Binárne vyhľadávanie je algoritmus O (logn), ktorý pri každom nájdení eliminuje polovicu možností, a vyhľadávanie v 256 dátach stačí nájsť 8-krát, aby sa našiel cieľ.

O(nlogn) je to isté, teda n vynásobené logn, keď sa dáta zvýšia 256-násobne, časová spotreba sa zvýši o 256 * 8 = 2048-násobok. Táto zložitosť je vyššia ako linearita pod štvorcom. Zlúčenie a triedenie je časová zložitosť O(nlogn).

O(1) je najnižšia priestorovo-časová zložitosť, teda čas/priestor spotrebovaný je nezávislý od veľkosti vstupných dát, bez ohľadu na to, koľkokrát sa vstupné údaje zvýšia, čas/priestor zostáva nezmenený. Hašovací algoritmus je typická časová zložitosť O(1), ktorá dokáže nájsť cieľ po jednom výpočte (bez ohľadu na konflikty), bez ohľadu na veľkosť dát.

Tento článok používa dvojicu BenchmarkDotNetList、HashSet、SortedSet、DictionaryPri vyhľadávaní benchmarkingu sa pozrite na nasledovné:

.NET/C# používa BenchmarkDotNet na testovanie výkonu kódu
https://www.itsvse.com/thread-9576-1-1.html

.NET/C# Testovanie výkonu reflexie, emitovania, výrazu
https://www.itsvse.com/thread-9598-1-1.html
Kód je nasledovný:

Výsledok testu: Nájdenie kľúča v slovníku alebo hashsete je oveľa rýchlejšie ako vyhľadávanie v zozname a SortedSet. Časová náročnosť algoritmov Dictionary a HashSet je O(1) a aby sme šetrili pamäť, hodnota slovníka nám nepomáha, preto som stále zvolil úložisko HashSet.







Predchádzajúci:[Cvičba] Čierna zoznam IP IP súborov IIS 10
Budúci:ASP.NET Core (XI) koncová trasa pridáva middleware na zobrazenie všetkých DI služieb
Zverejnené 7. 3. 2022 23:09:48 |
Príď sa znova učiť.
 Prenajímateľ| Zverejnené 9. 3. 2022 9:55:12 |
 Prenajímateľ| Zverejnené 24. 2. 2024 17:45:14 |
.NET/C# kolekcia Zoznam, HashSet na určenie, či má prvok benchmark
https://www.itsvse.com/thread-10735-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com