Share via


Advertencias de rendimiento

Las advertencias de rendimiento son compatibles con bibliotecas y aplicaciones de máximo rendimiento.

En esta sección

Regla

Descripción

CA1800: No convertir innecesariamente

Las conversiones duplicadas reducen el rendimiento, sobre todo cuando se realizan en instrucciones de iteración compactas.

CA1801: Revisar parámetros sin utilizar

Una firma de método incluye un parámetro que no se utiliza en el cuerpo del método.

CA1802: Usar literales cuando resulte apropiado

Un campo se declara como static y de solo lectura (Shared y ReadOnly en Visual Basic) y se inicializa con un valor que se puede calcular durante la compilación.Dado que el valor asignado al campo de destino se calcula en tiempo de compilación, cambie la declaración a un campo const (Const en Visual Basic) para que el valor se calcule en tiempo de compilación en lugar de en tiempo de ejecución.

CA1804: Quitar variables locales no utilizadas

Las variables locales no usadas y las asignaciones innecesarias aumentan el tamaño de un ensamblado y reducen el rendimiento.

CA1806: No omitir resultados del método

Se crea un nuevo objeto pero nunca se utiliza, o se llama a un método que crea y devuelve una nueva cadena y esta nunca se utiliza, o un método COM o P/Invoke devuelve un código de error o HRESULT que nunca se utiliza.

CA1809: Evitar el exceso de variables locales

Una optimización de rendimiento común es almacenar un valor en un registro del procesador en lugar de en la memoria, lo que se denomina "registrar el valor".Para aumentar la posibilidad de que todas las variables locales se registren, limite el número de variables locales a 64.

CA1810: Inicializar campos estáticos de tipo de referencia insertados

Cuando un tipo declara un constructor estático explícito, el compilador Just-In-Time (JIT) agrega una comprobación a cada constructor de instancia y a cada método estático del tipo para asegurarse de que se ha llamado anteriormente al constructor estático.Las comprobaciones del constructor estático pueden reducir el rendimiento.

CA1811: Evitar código privado al que no se llama

Un miembro interno o privado (nivel de ensamblado) no tiene llamadores en el ensamblado, no es invocado por Common Language Runtime ni tampoco por un delegado.

CA1812: Evitar las clases internas sin instancia

El código del ensamblado no crea una instancia del tipo del nivel de ensamblado.

CA1813: Evitar atributos no sellados

La biblioteca de clases de .NET Framework proporciona los métodos para recuperar los atributos personalizados.De forma predeterminada, estos métodos buscan la jerarquía de herencia de atributo.La acción de sellar el atributo elimina la búsqueda en la jerarquía de herencia y puede mejorarse el rendimiento.

CA1814: Preferir las matrices escalonadas antes que multidimensionales

Una matriz escalonada es una matriz cuyos elementos son matrices.Las matrices que constituyen los elementos pueden ser de tamaños diferentes, lo que reduce el espacio desaprovechado para algunos conjuntos de datos.

CA1815: Reemplazar Equals y el operador Equals en los tipos de valor

Para los tipos de valor, la implementación heredada de Equals utiliza la biblioteca de reflexión y compara el contenido de todos los campos.Mediante el cálculo, la reflexión es cara y no es necesario comparar cada campo para comprobar si hay igualdad.Si espera que los usuarios comparen u ordenen instancias, o utilicen instancias como claves de tabla hash, el tipo de valor debe implementar Equals.

CA1816: Llamar a GC.SuppressFinalize correctamente

Un método que es una implementación de Dispose no llama a GC.SuppressFinalize, o un método que no es una implementación de Dispose llama a GC.SuppressFinalize, o un método llama a GC.SuppressFinalize y pasa algo distinto de "this" (Me en Visual Basic).

CA1819: Las propiedades no deberían devolver matrices

Las matrices devueltas por las propiedades no están protegidas contra escritura, aun cuando la propiedad sea de solo lectura.Para mantener la matriz inviolable, la propiedad debe devolver una copia de la matriz.Por lo general, los usuarios no entienden las implicaciones de rendimiento adversas que se originan al llamar a este tipo de propiedad.

CA1820: Comprobar si las cadenas están vacías mediante la longitud de cadena

El uso de la propiedad String.Length o del método String.IsNullOrEmpty para comparar cadenas es mucho más rápido que el uso de Equals.

CA1821: Quitar los finalizadores vacíos

Siempre que pueda, evite los finalizadores debido a la sobrecarga de rendimiento adicional necesaria para el seguimiento de la duración del objeto.Un finalizador vacío produce una sobrecarga adicional sin ningún beneficio.

CA1822: Marcar el miembro como estático

Los miembros que no tienen acceso a datos de instancia o que llaman a métodos de instancia se pueden marcar como static (Shared en Visual Basic).Después de marcar los métodos como static, el compilador emite los sitios de llamada no virtuales para estos miembros.Esto puede proporcionar una mejora apreciable del rendimiento del código en el que el rendimiento es fundamental.

CA1823: Evitar los campos privados no utilizados

Se detectaron campos privados a los que no parece que se tenga acceso en el ensamblado.

CA1824: Marque los ensamblados con NeutralResourcesLanguageAttribute

El atributo NeutralResourcesLanguage informa a ResourceManager del idioma utilizado para mostrar los recursos de la referencia cultural neutral de un ensamblado.Esto mejora el rendimiento de la búsqueda del primer recurso que se carga y puede reducir el espacio de trabajo.