Optimiser les performances .NET
1) Évitez d'utiliser ArrayList.
Étant donné que tout objet ajouté à ArrayList doit être mis en boîte en tant que type System.Object, lorsque les données sont récupérées à partir de ArrayList, elles doivent être déballées pour revenir au type réel. Il est recommandé d'utiliser un type de collection personnalisé au lieu de ArrayList. .net 2.0 fournit un nouveau type appelé génériques, qui est un type fort. L'utilisation de collections génériques peut éviter le boxing et le unboxing et améliorer les performances.
2) Utilisez HashTale au lieu d'autres types de collections de dictionnaires (tels que StringDictionary, NameValueCollection, HybridCollection). HashTable peut être utilisé lors du stockage d'une petite quantité de données.
3) Déclarez des constantes pour les conteneurs de chaînes et n'encapsulez pas directement les caractères entre guillemets doubles. ".
//éviter
//
MonObjet obj = new MonObjet();
obj.Status = "ACTIF" ;
//Recommandé
const chaîne C_STATUS = "ACTIVE" ;
MonObjet obj = new MonObjet();
obj.Status = C_STATUS;
4) N'utilisez pas UpperCase ou Lowercase pour convertir des chaînes à des fins de comparaison. Utilisez plutôt String.Compare, qui peut ignorer la casse pour la comparaison.
exemple:
const string C_VALUE = "COMPARER" ;
if (String.Compare(sVariable, C_VALUE, true) == 0)
{
Console.Write("MÊME");
}
5) Utilisez StringBuilder au lieu d'utiliser le caractère de concaténation de chaîne "+",
//Éviter
.
Chaîne sXML = "<parent>" ;
sXML += "<enfant>" ;
sXML += "Données" ;
sXML += "</enfant>";
sXML += "</parent>" ;
//Recommandé
StringBuilder sbXML = new StringBuilder();
sbXML.Append("<parent>");
sbXML.Append("<enfant>");
sbXML.Append("Données");
sbXML.Append("</enfant>");
sbXML.Append("</parent>");
6) Si vous lisez uniquement à partir de l'objet XML, évitez d'utiliser XMLDocumentt, utilisez plutôt XPathDocument, qui est en lecture seule et améliore ainsi les performances.
Si vous lisez uniquement des données à partir d'objets XML, utilisez XPathDocument en lecture seule au lieu de XMLDocument pour améliorer les performances.
//éviter
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("packet/child");
iCount = xpNodeIter.Count;
xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);
tandis que (xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+"~";
}
7) Évitez de déclarer des variables dans le corps de la boucle. Déclarez les variables en dehors de la boucle et initialisez-les dans le corps de la boucle.
//éviter
pour(int i=0; i<10; i++)
{
UneClasse objSC = new UneClasse();
.
.
.
}
//recommander
UneClasse objSC = null ;
pour(int i=0; i<10; i++)
{
objSC = new UneClasse();
.
.
.
}
8) Interceptez l'exception spécifiée, n'utilisez pas l'exception générale System.Exception
//Avoid
.
essayer
{
<un peu de logique>
}
capture (exception exc)
{
<Gestion des erreurs>
}
//recommander
essayer
{
<un peu de logique>
}
catch (System. NullReferenceException exc)
{
<Gestion des erreurs>
}
catch (System.ArgumentOutOfRangeException exc)
{
<Gestion des erreurs>
}
catch (System. InvalidCastException exc)
{
<Gestion des erreurs>
}
9) Lors de l'utilisation de Try...catch...finally, les ressources occupées telles que les connexions, les flux de fichiers, etc. doivent être libérées définitivement. Sinon, les ressources occupées ne peuvent pas être libérées après qu'une erreur soit interceptée dans Catch.
essayer
{
...
}
attraper
{...}
enfin
{
connexion.close()
}
10) Évitez d'utiliser des appels récursifs et des boucles imbriquées. Leur utilisation affectera sérieusement les performances. Utilisez-les uniquement lorsqu'ils doivent être utilisés.
11) Utilisez des stratégies de mise en cache appropriées pour améliorer les performances. C'est tout pour aujourd'hui, j'écrirai davantage quand j'aurai le temps.
http://www.cnblogs.com/timone/archive/2006/11/17/563965.html