Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 13376|Ответ: 3

[Источник] Бенчмарк запроса в коллекции .NET/C#

[Скопировать ссылку]
Опубликовано 07.03.2022 16:47:50 | | | |
Требования: Необходимо определить тип коллекции только для чтения, который не будет добавлять, удалять и не изменять коллекцию, а только делать запросы к коллекции. Мы надеемсяЧем быстрее запрос, тем лучше

Распространённые сравнения множеств



При описании сложности алгоритма обычно используются o(1), o(n), o(logn), o(logn), o(logn), o(nlogn) для выражения временной сложности соответствующего алгоритма, который является выражением пространственно-временной сложности алгоритма. Он используется не только для представления временной сложности, но и для представления пространственной сложности.

За O следует функция в скобках, указывающая связь между временем/пространством, используемым алгоритмом, и объёмом обработанных данных. где n — объём входных данных.

Например, если временная сложность равна O(n), это означает, что объём данных увеличивается несколько раз, а расход времени также увеличивается несколько раз. Например, распространённые алгоритмы обхода. Другой пример — временная сложность O(n^2), которая означает, что при увеличении объёма данных в n раз требуется время, чтобы увеличиться в n квадрата, что является более высокой временной сложностью, чем линейность. Например, сортировка пузырьков — это типичный алгоритм O(n^2), который необходимо сканировать n × n раз для сортировки n чисел.

Другой пример — O(logn), когда данные увеличиваются в n раз, требуется время, чтобы увеличить количество времени логна (журнал здесь основан на 2, например, при увеличении данных в 256 раз время увеличивается только в 8 раз, что меньше, чем линейно). Бинарный поиск — это алгоритм O (logn), который исключает половину возможностей каждый раз при обнаружении, а поиск в 256 данных достаточно найти 8 раз, чтобы найти цель.

O(nlogn) — это то же самое, то есть n умножение на logn, при увеличении данных в 256 раз расход времени увеличивается на 256 * 8 = 2048 раз. Эта сложность выше, чем линейность ниже квадрата. Слияние и сортировка — это временная сложность O(nlogn).

O(1) — это наименьшая пространственно-временная сложность, то есть время/пространство не зависит от размера входных данных; сколько бы раз ни увеличивали входные данные, время/пространство остаётся неизменным. Алгоритм хеширования — это типичная временная сложность O(1), которая может найти цель после одного вычисления (независимо от конфликтов), независимо от размера данных.

В этой статье используется пара BenchmarkDotNetList、HashSet、SortedSet、DictionaryЗапрос для бенчмаркинга см. следующее:

.NET/C# использует BenchmarkDotNet для тестирования производительности кода
https://www.itsvse.com/thread-9576-1-1.html

.NET/C# Тестирование производительности отражения, излучения, выражения
https://www.itsvse.com/thread-9598-1-1.html
Код таков:

Результат теста: найти ключ в словаре или хэш-наборе гораздо быстрее, чем искать в списке и SortedSet. Временная сложность алгоритмов Dictionary и HashSet составляет O(1), и для экономии памяти значение словаря нам не пригодится, поэтому я всё равно выбрал хранилище HashSet.







Предыдущий:[Практика] Черный список IP-адресов IIS 10 Access Set
Следующий:ASP.NET Маршрут конечной точки Core (XI) добавляет промежуточное ПО для отображения всех сервисов DI
Опубликовано 07.03.2022 23:09:48 |
Приходи учиться снова.
 Хозяин| Опубликовано 09.03.2022 9:55:12 |
Тест HashSet


 Хозяин| Опубликовано 24.02.2024 17:45:14 |
.NET/C# collection List, HashSet для определения наличия элемента бенчмарка
https://www.itsvse.com/thread-10735-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com