Sugerencias para mejorar el rendimiento de .NET
El término rendimiento suele hacer referencia a la velocidad de ejecución de un programa. A veces se puede aumentar la velocidad de ejecución si se siguen algunas reglas básicas en el código fuente. 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. En otros programas, no es necesario realizar esta optimización, ya que el código se ejecuta con una velocidad aceptable mientras se escribe. 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. Para más información sobre cómo planear y medir el rendimiento, vea Rendimiento
Conversión boxing y conversión 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. Puede evitar la conversión boxing de tipos de valor mediante el uso de colecciones genéricas como System.Collections.Generic.List<T>. Las conversiones boxing y unboxing son procesos que consumen muchos recursos. Cuando se aplica la conversión boxing a un tipo de valor, se debe crear un objeto completamente nuevo. Esto puede tardar hasta 20 veces más que la asignación de una referencia simple. Cuando se aplica la conversión unboxing, el proceso de conversión puede tardar cuatro veces más que una asignación. Para obtener más información, vea Conversión boxing y unboxing.
Cadenas
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. Para más información, consulte Cómo concatenar varias cadenas y Operadores de concatenación en Visual Basic.
Finalizadores
Los finalizadores vacíos no deben usarse. Cuando una clase contiene un finalizador, se crea una entrada en la cola de finalización. Cuando se llama al finalizador, se invoca al recolector de elementos no utilizados para procesar la cola. Si el finalizador está vacío, simplemente se pierde rendimiento. Para más información, vea Finalizadores y Duración de los objetos: cómo se crean y destruyen.
Otros recursos
Writing Faster Managed Code: Know What Things Cost (Escribir código administrado con mayor rapidez: conocer el costo de las cosas)
Writing High-Performance Managed Applications: A Primer (Escribir aplicaciones administradas de alto rendimiento: introducción)
Garbage Collector Basics and Performance Hints (Conceptos básicos del recolector de elementos no utilizados y sugerencias de rendimiento)
Performance Tips and Tricks in .NET Applications (Sugerencias y trucos de rendimiento en aplicaciones .NET)
Rico Mariani's Performance Tidbits (Curiosidades sobre rendimiento de Rico Mariani)