Compartir a través de


Lista<T> ineficaz. Buscar uso

En este artículo se describe información de rendimiento al usar List<T>.Find.

Causa

List<T>.Find el método da como resultado un rendimiento lento.

Descripción de la información de rendimiento

El List<T>.Find método realiza una búsqueda lineal a través de la lista, lo que da lugar a una complejidad de tiempo de O(n) para cada búsqueda. Esto puede ser ineficaz al buscar elementos con frecuencia o en listas grandes.

Si es posible, considere la posibilidad de usar Dictionary<TKey,TValue> o .HashSet<T> Si puede asignar una clave o una propiedad única al valor, Dictionary<TKey,TValue> se puede usar. Si almacena valores únicos, HashSet<T> se puede usar. Ambas estructuras de datos alternativas tienen una complejidad de tiempo de O(1) para cada búsqueda en comparación con O(n) en List<T>.Find.

Cómo investigar una advertencia

En la herramienta Uso de CPU, haga clic en Ver código fuente para buscar dónde List<T>.Find se usa. Si es posible, refactorice el código para usar una estructura de datos alternativa con búsquedas más rápidas.

Consulte también

Diccionarios en .NET