Otimize o desempenho do .NET
1) Evite usar ArrayList.
Como qualquer objeto adicionado ao ArrayList deve ser empacotado como tipo System.Object, quando os dados são recuperados do ArrayList, eles devem ser desempacotados de volta ao tipo real. Recomenda-se usar um tipo de coleção personalizado em vez de ArrayList. O .net 2.0 fornece um novo tipo chamado genéricos, que é um tipo forte. O uso de coleções genéricas pode evitar boxing e unboxing e melhorar o desempenho.
2) Use HashTale em vez de outros tipos de coleção de dicionário (como StringDictionary, NameValueCollection, HybridCollection). HashTable pode ser usado ao armazenar uma pequena quantidade de dados.
3) Declarar constantes para contêineres de string e não encapsular caracteres diretamente entre aspas duplas ". ".
//evitar
//
MeuObjeto obj = new MeuObjeto();
obj.Status = "ATIVO";
//Recomendado
const string C_STATUS = "ATIVO";
MeuObjeto obj = new MeuObjeto();
obj.Status = C_STATUS;
4) Não use maiúsculas ou minúsculas para converter strings para comparação. Em vez disso, use String.Compare, que pode ignorar maiúsculas e minúsculas para comparação.
exemplo:
const string C_VALUE = "COMPARAR";
if (String.Compare(sVariable, C_VALUE, true) == 0)
{
Console.Write("MESMO");
}
5) Use StringBuilder em vez de usar o caractere de concatenação de string "+",
//Evite
.
String sXML = "<parent>";
sXML += "<filho>";
sXML += "Dados";
sXML += "</child>";
sXML += "</parent>";
//Recomendado
StringBuilder sbXML = new StringBuilder();
sbXML.Append("<parent>");
sbXML.Append("<filho>");
sbXML.Append("Dados");
sbXML.Append("</child>");
sbXML.Append("</parent>");
6) Se você estiver lendo apenas do objeto XML, evite usar XMLDocumentt, em vez disso use XPathDocument, que é somente leitura e melhora o desempenho.
Se você ler apenas dados de objetos XML, use XPathDocument somente leitura em vez de XMLDocument para melhorar o desempenho.
//evitar
XmlDocument xmld = new XmlDocument();
xmld.LoadXml(sXML);
txtName.Text = xmld.SelectSingleNode("/packet/child").
InnerText
.
XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
XPathNavigator xnav = xmldContext.CreateNavigator();
XPathNodeIterator xpNodeIter = xnav.Select("pacote/filho");
iCount = xpNodeIter.Count;
xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, falso);
enquanto(xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+"~";
}
7) Evite declarar variáveis no corpo do loop. Declare variáveis fora do loop e inicialize-as no corpo do loop.
//evitar
para(int i=0; i<10; i++)
{
SomeClass objSC = new SomeClass();
.
.
.
}
//recomendar
SomeClass objSC = null;
para(int i=0; i<10; i++)
{
objSC = new SomeClass();
.
.
.
}
8) Capture a exceção especificada, não use o System.Exception geral
.
tentar
{
<alguma lógica>
}
catch(Exceção exc)
{
<Tratamento de erros>
}
//recomendar
tentar
{
<alguma lógica>
}
catch(System.NullReferenceException exc)
{
<Tratamento de erros>
}
catch(System.ArgumentOutOfRangeException exc)
{
<Tratamento de erros>
}
catch(System.InvalidCastException exc)
{
<Tratamento de erros>
}
9) Ao usar Try...catch...finalmente, os recursos ocupados, como conexões, fluxos de arquivos, etc. devem ser liberados finalmente, caso contrário, os recursos ocupados não poderão ser liberados após um erro ser detectado em Catch.
tentar
{
...
}
pegar
{...}
finalmente
{
conexão.fechar()
}
10) Evite usar chamadas recursivas e loops aninhados. Usá-los afetará seriamente o desempenho.
11) Use estratégias de cache apropriadas para melhorar o desempenho por hoje. Escreverei mais quando tiver tempo.
http://www.cnblogs.com/timone/archive/2006/11/17/563965.html