advertencias de rendimientoPerformance Warnings

Las advertencias de rendimiento compatibles con aplicaciones y bibliotecas de alto rendimiento.Performance warnings support high-performance libraries and applications.

En esta secciónIn This Section

ReglaRule DescripciónDescription
CA1800: No convertir innecesariamenteCA1800: Do not cast unnecessarily Las conversiones duplicadas reducen el rendimiento, sobre todo cuando se realizan en instrucciones de iteración compactas.Duplicate casts decrease performance, especially when the casts are performed in compact iteration statements.
CA1801: Revisar parámetros sin utilizarCA1801: Review unused parameters Una firma de método incluye un parámetro que no se utiliza en el cuerpo del método.A method signature includes a parameter that is not used in the method body.
CA1802: Utilizar letras cuando sea apropiadoCA1802: Use Literals Where Appropriate Se declara un campo estático y de solo lectura (Shared y ReadOnly en Visual BasicVisual Basic) y se inicializa con un valor que se puede calcular en tiempo de compilación.A field is declared static and read-only (Shared and ReadOnly in Visual BasicVisual Basic), and is initialized with a value that is computable at compile time. Dado que el valor que se asigna al campo de destino se calcula en tiempo de compilación, cambie la declaración a const (Const en Visual BasicVisual Basic) de campo para que el valor se calcula en tiempo de compilación en lugar de en tiempo de ejecución.Because the value that is assigned to the targeted field is computable at compile time, change the declaration to a const (Const in Visual BasicVisual Basic) field so that the value is computed at compile time instead of at run time.
CA1804: Quitar variables locales no utilizadasCA1804: Remove unused locals Las variables locales no usadas y las asignaciones innecesarias aumentan el tamaño de un ensamblado y reducen el rendimiento.Unused local variables and unnecessary assignments increase the size of an assembly and decrease performance.
CA1806: No omitir resultados del métodoCA1806: Do not ignore method results Un nuevo objeto se crea pero nunca se utiliza, se llama a un método que crea y devuelve una nueva cadena y nunca se usa la nueva cadena o un método del modelo de objetos componentes (COM) o P/Invoke devuelve un código de error o HRESULT que nunca se utiliza.A new object is created but never used, or a method that creates and returns a new string is called and the new string is never used, or a Component Object Model (COM) or P/Invoke method returns an HRESULT or error code that is never used.
CA1809: Evitar variables locales excesivasCA1809: Avoid excessive locals 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".A common performance optimization is to store a value in a processor register instead of memory, which is referred to as "enregistering the value". Para aumentar la probabilidad de que todas las variables locales son registren, limite el número de variables locales a 64.To increase the chance that all local variables are enregistered, limit the number of local variables to 64.
CA1810: Inicializar campos estáticos de tipo de referencia insertadosCA1810: Initialize reference type static fields inline 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.When a type declares an explicit static constructor, the just-in-time (JIT) compiler adds a check to each static method and instance constructor of the type to make sure that the static constructor was previously called. Las comprobaciones del constructor estático pueden reducir el rendimiento.Static constructor checks can decrease performance.
CA1811: Evitar código privado al que no se llamaCA1811: Avoid uncalled private code Miembro privado o interno (nivel de ensamblado) no tiene llamadores en el ensamblado, no se invoca por common language runtime y no se invoca un delegado.A private or internal (assembly-level) member does not have callers in the assembly, it is not invoked by the common language runtime, and it is not invoked by a delegate.
CA1812: Evitar las clases internas sin instanciaCA1812: Avoid uninstantiated internal classes El código del ensamblado no crea una instancia del tipo del nivel de ensamblado.An instance of an assembly-level type is not created by code in the assembly.
CA1813: Evitar atributos no selladosCA1813: Avoid unsealed attributes La biblioteca de clases de .NET Framework proporciona métodos para recuperar los atributos personalizados.The .NET Framework class library provides methods for retrieving custom attributes. De forma predeterminada, estos métodos buscan la jerarquía de herencia de atributo.By default, these methods search the attribute inheritance hierarchy. La acción de sellar el atributo elimina la búsqueda en la jerarquía de herencia y puede mejorarse el rendimiento.Sealing the attribute eliminates the search through the inheritance hierarchy and can improve performance.
CA1814: Preferir las matrices escalonadas antes que multidimensionalesCA1814: Prefer jagged arrays over multidimensional Una matriz escalonada es una matriz cuyos elementos son matrices.A jagged array is an array whose elements are arrays. Las matrices que constituyen los elementos pueden ser de diferentes tamaños, que pueden dar lugar a un espacio desaprovechado para algunos conjuntos de datos.The arrays that make up the elements can be of different sizes, which can result in less wasted space for some sets of data.
CA1815: Invalidar Equals y el operador Equals en los tipos de valoresCA1815: Override equals and operator equals on value types 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.For value types, the inherited implementation of Equals uses the Reflection library and compares the contents of all fields. Mediante el cálculo, la reflexión es cara y no es necesario comparar cada campo para comprobar si hay igualdad.Reflection is computationally expensive, and comparing every field for equality might be unnecessary. Si espera que los usuarios comparen u ordenen instancias, o utilicen instancias como claves de tabla hash, el tipo de valor debe implementar Equals.If you expect users to compare or sort instances, or to use instances as hash table keys, your value type should implement Equals.
CA1816: Llame a GC.SuppressFinalize correctamenteCA1816: Call GC.SuppressFinalize correctly 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 esto (Me en Visual BasicVisual Basic).A method that is an implementation of Dispose does not call GC.SuppressFinalize, or a method that is not an implementation of Dispose calls GC.SuppressFinalize, or a method calls GC.SuppressFinalize and passes something other than this (Me in Visual BasicVisual Basic).
CA1819: Las propiedades no deberían devolver matricesCA1819: Properties should not return arrays Las matrices devueltas por las propiedades no están protegidos contra escritura, incluso si la propiedad es de solo lectura.Arrays that are returned by properties are not write-protected, even if the property is read-only. Para mantener la matriz inviolable, la propiedad debe devolver una copia de la matriz.To keep the array tamper-proof, the property must return a copy of the array. Por lo general, los usuarios no entienden las implicaciones de rendimiento adversas que se originan al llamar a este tipo de propiedad.Typically, users will not understand the adverse performance implications of calling such a property.
CA1820: Comprobar si las cadenas están vacías mediante la longitud de cadenaCA1820: Test for empty strings using string length 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.Comparing strings by using the String.Length property or the String.IsNullOrEmpty method is significantly faster than using Equals.
CA1821: Quitar los finalizadores vacíosCA1821: Remove empty finalizers Siempre que pueda, evite los finalizadores debido a la sobrecarga de rendimiento adicional necesaria para el seguimiento de la duración del objeto.Whenever you can, avoid finalizers because of the additional performance overhead that is involved in tracking object lifetime. Un finalizador vacío produce una sobrecarga adicional sin ningún beneficio.An empty finalizer incurs added overhead without any benefit.
CA1822: Marcar el miembro como estáticoCA1822: Mark members as static 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 BasicVisual Basic).Members that do not access instance data or call instance methods can be marked as static (Shared in Visual BasicVisual Basic). Después de marcar los métodos como static, el compilador emite los sitios de llamada no virtuales para estos miembros.After you mark the methods as static, the compiler will emit nonvirtual call sites to these members. Esto puede proporcionar una mejora apreciable del rendimiento del código en el que el rendimiento es fundamental.This can give you a measurable performance gain for performance-sensitive code.
CA1823: Evitar los campos privados sin utilizarCA1823: Avoid unused private fields Se detectaron campos privados a los que no parece que se tenga acceso en el ensamblado.Private fields were detected that do not appear to be accessed in the assembly.
CA1824: Marque los ensamblados con NeutralResourcesLanguageAttributeCA1824: Mark assemblies with NeutralResourcesLanguageAttribute El atributo NeutralResourcesLanguage informa a ResourceManager del idioma utilizado para mostrar los recursos de la referencia cultural neutral de un ensamblado.The NeutralResourcesLanguage attribute informs the ResourceManager of the language that was used to display the resources of a neutral culture for an assembly. Esto mejora el rendimiento de la búsqueda del primer recurso que se carga y puede reducir el espacio de trabajo.This improves lookup performance for the first resource that you load and can reduce your working set.