Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 13376|Atsakyti: 3

[Šaltinis] .NET/C# rinkinio tipo užklausos etalonas

[Kopijuoti nuorodą]
Paskelbta 2022-03-07 16:47:50 | | | |
Reikalavimai: Turite apibrėžti tik skaitomo rinkinio tipą, kuris nepridės, neištrins ir nemodifikuos rinkinio, o tik pateiks užklausą rinkiniui. Tikimės, kadKuo greitesnė užklausa, tuo geriau

Įprasti rinkinių palyginimai



Apibūdinant algoritmo sudėtingumą, o(1), o(n), o(logn), o(logn), o(nlogn) dažniausiai naudojami atitinkamo algoritmo laiko sudėtingumui išreikšti, kuris yra algoritmo erdvinio ir laiko sudėtingumo išraiška. Jis naudojamas ne tik laiko sudėtingumui pavaizduoti, bet ir erdviniam sudėtingumui pavaizduoti.

Po O skliausteliuose pateikiama funkcija, nurodanti santykį tarp algoritmo sunaudojamo laiko/erdvės ir surinktų duomenų kiekio. kur n reiškia įvesties duomenų kiekį.

Pavyzdžiui, jei laiko sudėtingumas yra O(n), tai reiškia, kad duomenų kiekis padidėja kelis kartus, o laiko sąnaudos taip pat padidėja kelis kartus. Pavyzdžiui, įprasti perėjimo algoritmai. Kitas pavyzdys yra laiko sudėtingumas O(n^2), o tai reiškia, kad kai duomenų kiekis padidėja n kartų, reikia laiko padidinti n kvadratinių kartų, o tai yra didesnis laiko sudėtingumas nei linijinis. Pavyzdžiui, burbulų rūšiavimas yra tipiškas O(n^2) algoritmas, kurį reikia nuskaityti n × n kartų, kad būtų galima rūšiuoti n skaičius.

Kitas pavyzdys yra O(logn), kai duomenys padidėja n kartų, reikia laiko padidinti prisijungimo laiką (žurnalas čia pagrįstas 2, pavyzdžiui, kai duomenys padidinami 256 kartus, reikalingas laikas padidėja tik 8 kartus, o tai yra mažesnis nei linijinis. Dvejetainė paieška yra O (logn) algoritmas, kuris pašalina pusę galimybių kiekvieną kartą, kai jis randamas, o 256 duomenų paiešką reikia rasti tik 8 kartus, kad būtų rastas taikinys.

O(nlogn) yra tas pats, tai yra, n padaugintas iš logn, kai duomenys padidinami 256 kartus, laiko sąnaudos padidėja 256 * 8 = 2048 kartus. Šis sudėtingumas yra didesnis nei tiesiškumas žemiau kvadrato. Sujungti ir rūšiuoti yra O(nlogn) laiko sudėtingumas.

O(1) yra mažiausias erdvės ir laiko sudėtingumas, tai yra, sunaudotas laikas/erdvė nepriklauso nuo įvesties duomenų dydžio, nesvarbu, kiek kartų įvesties duomenys padidinami, sunaudotas laikas/erdvė išlieka nepakitęs. Maišos algoritmas yra tipiškas O(1) laiko sudėtingumas, kuris gali rasti taikinį po vieno skaičiavimo (nepriklausomai nuo konfliktų), nesvarbu, kokio dydžio duomenys yra.

Šiame straipsnyje naudojama "BenchmarkDotNet" poraSąrašas、HashSet、SortedSet、ŽodynasLyginamosios analizės užklausa, žr.

.NET/C# naudoja BenchmarkDotNet kodo našumui patikrinti
https://www.itsvse.com/thread-9576-1-1.html

.NET/C# atspindys, emisija, išraiškos našumo testavimas
https://www.itsvse.com/thread-9598-1-1.html
Kodas yra toks:

Testo rezultatas: Rasti raktą žodyne arba maišų rinkinyje yra daug greičiau nei ieškoti sąraše ir SortedSet. Žodyno ir HashSet algoritmų laiko sudėtingumas yra O(1), o norint sutaupyti atminties, žodyno reikšmė mums nenaudinga, todėl vis tiek pasirinkau HashSet saugyklą.







Ankstesnis:[Praktika] IIS 10 prieigos rinkinio IP juodasis sąrašas
Kitą:ASP.NET Core (XI) galinio taško maršrutas prideda tarpinę programinę įrangą, kad būtų rodomos visos DI paslaugos
Paskelbta 2022-03-07 23:09:48 |
Ateikite mokytis dar kartą.
 Savininkas| Paskelbta 2022-03-09 09:55:12 |
HashSet testas


 Savininkas| Paskelbta 2024-02-24 17:45:14 |
.NET/C# rinkinio sąrašas, HashSet, siekiant nustatyti, ar elementas turi etaloną
https://www.itsvse.com/thread-10735-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com