Optimice el rendimiento de .NET
1) Evite el uso de ArrayList.
Debido a que cualquier objeto agregado a ArrayList debe encuadrarse como tipo System.Object, cuando se recuperan datos de ArrayList, se deben desempaquetar nuevamente al tipo real. Se recomienda utilizar un tipo de colección personalizado en lugar de ArrayList. .net 2.0 proporciona un nuevo tipo llamado genéricos, que es un tipo fuerte. El uso de colecciones genéricas puede evitar el boxing y unboxing y mejorar el rendimiento.
2) Utilice HashTale en lugar de otros tipos de colecciones de diccionarios (como StringDictionary, NameValueCollection, HybridCollection se pueden utilizar al almacenar una pequeña cantidad de datos).
3) Declare constantes para contenedores de cadenas y no encapsule caracteres directamente entre comillas dobles ". ".
//evitar
//
MiObjeto obj = nuevo MiObjeto();
obj.Status = "ACTIVO";
//Recomendado
cadena constante C_STATUS = "ACTIVO";
MiObjeto obj = nuevo MiObjeto();
obj.Status = C_STATUS;
4) No use mayúsculas o minúsculas para convertir cadenas para comparar. Utilice String.Compare en su lugar, que puede ignorar mayúsculas y minúsculas para comparar.
ejemplo:
cadena constante C_VALUE = "COMPARAR";
si (String.Compare(sVariable, C_VALUE, verdadero) == 0)
{
Consola.Write("MISMO");
}
5) Utilice StringBuilder en lugar de utilizar el carácter de concatenación de cadenas "+",
//Evitar
.
Cadena sXML = "<padre>";
sXML += "<niño>";
sXML += "Datos";
sXML += "</niño>";
sXML += "</parent>";
//Recomendado
StringBuilder sbXML = nuevo StringBuilder();
sbXML.Append("<padre>");
sbXML.Append("<niño>");
sbXML.Append("Datos");
sbXML.Append("</child>");
sbXML.Append("</parent>");
6) Si solo está leyendo del objeto XML, evite usar XMLDocumentt; en su lugar, use XPathDocument, que es de solo lectura y, por lo tanto, mejora el rendimiento.
Si solo lee datos de objetos XML, utilice XPathDocument de solo lectura en lugar de XMLDocument para mejorar el rendimiento.
//evitar
XmlDocument xmld = nuevo XmlDocument();
xmld.LoadXml(sXML);
txtName.Text = xmld.SelectSingleNode("/packet/child").InnerText
//
Recomendado
;
XPathDocument xmldContext = nuevo XPathDocument(nuevo StringReader(oContext.Value));
XPathNavigator xnav = xmldContext.CreateNavigator();
XPathNodeIterator xpNodeIter = xnav.Select("paquete/niño");
iCount = xpNodeIter.Count;
xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, falso);
mientras(xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+"~";
}
7) Evite declarar variables en el cuerpo del bucle. Declare variables fuera del bucle e inicialícelas en el cuerpo del bucle.
//evitar
para(int i=0; i<10; i++)
{
AlgunaClase objSC = nueva AlgunaClase();
.
.
.
}
//recomendar
SomeClass objSC = nulo;
para(int i=0; i<10; i++)
{
objSC = nueva AlgunasClase();
.
.
.
}
8) Capte la excepción especificada, no utilice la System.Exception general
//Evitar
.
intentar
{
<algo de lógica>
}
captura (Excepción exc)
{
<Manejo de errores>
}
//recomendar
intentar
{
<algo de lógica>
}
captura (System.NullReferenceException exc)
{
<Manejo de errores>
}
captura (System.ArgumentOutOfRangeException exc)
{
<Manejo de errores>
}
captura (System.InvalidCastException exc)
{
<Manejo de errores>
}
9) Cuando se utiliza Try...catch...finally, los recursos ocupados, como conexiones, secuencias de archivos, etc., deben liberarse finalmente. De lo contrario, los recursos ocupados no se pueden liberar después de que se detecte un error en Catch.
intentar
{
...
}
atrapar
{...}
finalmente
{
conexión.cerrar()
}
10) Evite el uso de llamadas recursivas y bucles anidados. Su uso afectará seriamente el rendimiento. Úselos solo cuando sea necesario.
11) Utilice estrategias de almacenamiento en caché adecuadas para mejorar el rendimiento. Eso es todo por hoy. Escribiré más cuando tenga tiempo.
http://www.cnblogs.com/timone/archive/2006/11/17/563965.html