Sugerencias para mejorar el rendimiento de .NET.NET Performance Tips

El término rendimiento suele hacer referencia a la velocidad de ejecución de un programa.The term performance generally refers to the execution speed of a program. A veces se puede aumentar la velocidad de ejecución si se siguen algunas reglas básicas en el código fuente.You can sometimes increase execution speed by following certain basic rules in your source code. En algunos programas, es importante examinar el código detenidamente y usar generadores de perfiles para asegurarse de que se está ejecutando lo más rápidamente posible.In some programs, it is important to examine code closely and use profilers to make sure that it is running as fast as possible. En otros programas, no es necesario realizar esta optimización, ya que el código se ejecuta con una velocidad aceptable mientras se escribe.In other programs, you do not have to perform such optimization because the code is running acceptably fast as it is written. En este artículo se enumeran algunas áreas donde el rendimiento puede verse afectado y sugerencias para mejorar, así como vínculos a temas de rendimiento adicionales.This article lists some common areas where performance can suffer and tips for improving it as well as links to additional performance topics. Para más información sobre cómo planear y medir el rendimiento, vea RendimientoFor more information about planning and measuring for performance, see Performance

Conversión boxing y conversión unboxingBoxing and Unboxing

Es mejor evitar el uso de tipos de valor en situaciones en las que se debe aplicar la conversión boxing un gran número de veces, por ejemplo, en las clases de colecciones no genéricas como System.Collections.ArrayList.It is best to avoid using value types in situations where they must be boxed a high number of times, for example in non-generic collections classes such as System.Collections.ArrayList. Puede evitar la conversión boxing de tipos de valor mediante el uso de colecciones genéricas como System.Collections.Generic.List<T>.You can avoid boxing of value types by using generic collections such as System.Collections.Generic.List<T>. Las conversiones boxing y unboxing son procesos que consumen muchos recursos.Boxing and unboxing are computationally expensive processes. Cuando se aplica la conversión boxing a un tipo de valor, se debe crear un objeto completamente nuevo.When a value type is boxed, an entirely new object must be created. Esto puede tardar hasta 20 veces más que la asignación de una referencia simple.This can take up to 20 times longer than a simple reference assignment. Cuando se aplica la conversión unboxing, el proceso de conversión puede tardar cuatro veces más que una asignación.When unboxing, the casting process can take four times as long as an assignment. Para obtener más información, vea Conversión boxing y unboxing.For more information, see Boxing and Unboxing.

CadenasStrings

Al concatenar un gran número de variables de cadena, por ejemplo en un bucle compacto, use System.Text.StringBuilder en lugar del operador + de C# o los operadores de concatenación de Visual Basic.When you concatenate a large number of string variables, for example in a tight loop, use System.Text.StringBuilder instead of the C# + operator or the Visual Basic Concatenation Operators. Para obtener más información, vea Cómo: Concatenar varias cadenas y operadores de concatenación en Visual Basic.For more information, see How to: Concatenate Multiple Strings and Concatenation Operators in Visual Basic.

DestructoresDestructors

No se deben utilizar destructores vacíos.Empty destructors should not be used. Cuando una clase contiene un destructor, se crea una entrada en la cola Finalize.When a class contains a destructor, an entry is created in the Finalize queue. Cuando se llama al destructor, se invoca al recolector de elementos no utilizados para procesar la cola.When the destructor is called, the garbage collector is invoked to process the queue. Si el destructor está vacío, simplemente se produce una pérdida de rendimiento.If the destructor is empty, this simply results in a loss of performance. Para obtener más información, consulte destructores y duración del objeto: ¿Cómo se crean y destruyen objetos.For more information, see Destructors and Object Lifetime: How Objects Are Created and Destroyed.

Otros recursosOther Resources

Vea tambiénSee also