Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 13376|Respuesta: 3

[Fuente] Benchmark de consultas de tipos de colección .NET/C#

[Copiar enlace]
Publicado en 7/3/2022 16:47:50 | | | |
Requisitos: Necesitas definir un tipo de colección de solo lectura, que no añadirá, eliminará ni modificará la colección, sino que solo la consultará. EsperamosCuanto más rápida sea la consulta, mejor

Comparaciones de conjuntos comunes



Al describir la complejidad del algoritmo, o(1), o(n), o(logn), o(logn), o(logn), o(nlogn) se usan comúnmente para expresar la complejidad temporal del algoritmo correspondiente, que es la expresión de la complejidad espaciotemporal del algoritmo. Se utiliza no solo para representar la complejidad temporal, sino también para representar la complejidad espacial.

O va seguida de una función entre paréntesis que indica la relación entre el tiempo/espacio consumido por un algoritmo y la cantidad de datos cultivados. donde n representa la cantidad de datos de entrada.

Por ejemplo, si la complejidad temporal es O(n), significa que la cantidad de datos aumenta varias veces y el consumo de tiempo también aumenta varias veces. Por ejemplo, algoritmos comunes de desplazamiento. Otro ejemplo es la complejidad temporal O(n^2), lo que significa que cuando el volumen de datos aumenta n veces, tarda tiempo en aumentar n veces cuadradas, lo que es una complejidad temporal mayor que la lineal. Por ejemplo, la ordenación de burbujas es un algoritmo típico de O(n^2), que necesita ser escaneado n × n veces para ordenar n números.

Otro ejemplo es O(logn), cuando los datos aumentan n veces, tarda tiempo en aumentar las logn (el logaritmo aquí se basa en 2, por ejemplo, cuando los datos se incrementan 256 veces, el tiempo requerido solo aumenta 8 veces, lo que es menor que el lineal). La búsqueda binaria es el algoritmo de O (logn), que elimina la mitad de las posibilidades cada vez que se encuentra, y la búsqueda en 256 datos solo necesita encontrarse 8 veces para encontrar el objetivo.

O(nlogn) es el mismo, es decir, n multiplicado por logn; cuando los datos se multiplican por 256, el consumo de tiempo aumenta 256 * 8 = 2048 veces. Esta complejidad es mayor que la linealidad por debajo del cuadrado. Merge and sort es la complejidad temporal de O(nlogn).

O(1) es la menor complejidad espaciotemporal, es decir, el tiempo/espacio consumido es independiente del tamaño de los datos de entrada; no importa cuántas veces se aumenten los datos de entrada, el tiempo/espacio consumido permanece sin cambios. El algoritmo de hashing es una típica complejidad temporal O(1), que puede encontrar el objetivo tras un solo cálculo (independientemente de los conflictos), sin importar lo grandes que sean los datos.

Este artículo utiliza el par BenchmarkDotNetList、HashSet、SortedSet、DictionaryPara consultar para benchmarking, consulte lo siguiente:

.NET/C# utiliza BenchmarkDotNet para probar el rendimiento del código
https://www.itsvse.com/thread-9576-1-1.html

Pruebas de rendimiento de la reflexión, emisión y expresión .NET/C#
https://www.itsvse.com/thread-9598-1-1.html
El código es el siguiente:

Resultado de la prueba: Encontrar una clave en un Diccionario o HashSet es mucho más rápido que buscar en una Lista y en SortedSet. La complejidad temporal de los algoritmos Dictionary y HashSet es O(1), y para ahorrar memoria, el valor del Diccionario no nos sirve, así que aún elegí almacenamiento HashSet.







Anterior:[Práctica] Lista negra de IP del conjunto de acceso IIS 10
Próximo:ASP.NET ruta Core (XI) añade middleware para mostrar todos los servicios DI
Publicado en 7/3/2022 23:09:48 |
Ven a aprender otra vez.
 Propietario| Publicado en 9/3/2022 9:55:12 |
 Propietario| Publicado en 24/2/2024 17:45:14 |
.NET/C# colección Lista, HashSet para determinar si un elemento tiene un benchmark
https://www.itsvse.com/thread-10735-1-1.html
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com