Advertencias de rendimiento
Las advertencias de rendimiento son compatibles con bibliotecas y aplicaciones de máximo rendimiento.
En esta sección
Regla |
Descripción |
---|---|
Las conversiones duplicadas reducen el rendimiento, sobre todo cuando se realizan en instrucciones de iteración compactas. |
|
Una firma de método incluye un parámetro que no se utiliza en el cuerpo del método. |
|
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. |
|
Las variables locales no usadas y las asignaciones innecesarias aumentan el tamaño de un ensamblado y reducen el rendimiento. |
|
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. |
|
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. |
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. |
|
El código del ensamblado no crea una instancia del tipo del nivel de ensamblado. |
|
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. |
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). |
|
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. |
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. |
|
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. |
|
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. |