Optimieren Sie die .NET-Leistung.
1) Vermeiden Sie die Verwendung von ArrayList.
Da jedes zur ArrayList hinzugefügte Objekt als System.Object-Typ geboxt sein muss, muss es beim Abrufen von Daten aus der ArrayList wieder in den tatsächlichen Typ entpackt werden. Es wird empfohlen, anstelle von ArrayList einen benutzerdefinierten Sammlungstyp zu verwenden. .net 2.0 stellt einen neuen Typ namens „Generika“ bereit. Durch die Verwendung generischer Sammlungen kann das Ein- und Auspacken vermieden und die Leistung verbessert werden.
2) Verwenden Sie HashTale anstelle anderer Wörterbuchsammlungstypen (z. B. StringDictionary, NameValueCollection, HybridCollection).
3) Deklarieren Sie Konstanten für Zeichenfolgencontainer und kapseln Sie Zeichen nicht direkt in doppelte Anführungszeichen. ".
//vermeiden
//
MyObject obj = new MyObject();
obj.Status = "ACTIVE";
//Empfohlen
const string C_STATUS = "ACTIVE";
MyObject obj = new MyObject();
obj.Status = C_STATUS;
4) Verwenden Sie zum Konvertieren von Zeichenfolgen weder Groß- noch Kleinbuchstaben. Verwenden Sie stattdessen String.Compare, wodurch die Groß- und Kleinschreibung beim Vergleich ignoriert werden kann.
Beispiel:
const string C_VALUE = "COMPARE";
if (String.Compare(sVariable, C_VALUE, true) == 0)
{
Console.Write("SAME");
}
5) Verwenden Sie StringBuilder anstelle des Zeichenfolgenverkettungszeichens „+“,
//Vermeiden Sie
String sXML = "<parent>";
sXML += "<child>";
sXML += "Daten";
sXML += "</child>";
sXML += "</parent>";
//Empfohlen
StringBuilder sbXML = new StringBuilder();
sbXML.Append("<parent>");
sbXML.Append("<child>");
sbXML.Append("Data");
sbXML.Append("</child>");
sbXML.Append("</parent>");
6) Wenn Sie nur aus dem XML-Objekt lesen, vermeiden Sie die Verwendung von XMLDocumentt und verwenden Sie stattdessen XPathDocument, das schreibgeschützt ist und somit die Leistung verbessert.
Wenn Sie nur Daten aus XML-Objekten lesen, verwenden Sie das schreibgeschützte XPathDocument anstelle von XMLDocument, um die Leistung zu verbessern.
//vermeiden
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);
while(xpNodeIter.MoveNext())
{
sCurrValues += xpNodeIter.Current.Value+"~";
}
7) Vermeiden Sie die Deklaration von Variablen im Schleifenkörper. Deklarieren Sie Variablen außerhalb der Schleife und initialisieren Sie sie im Schleifenkörper.
//vermeiden
for(int i=0; i<10; i++)
{
SomeClass objSC = new SomeClass();
.
.
.
}
//empfehlen
SomeClass objSC = null;
for(int i=0; i<10; i++)
{
objSC = new SomeClass();
.
.
.
}
Sie
nicht die allgemeine System.Exception
versuchen
{
<etwas Logik>
}
Catch (Ausnahme exc)
{
<Fehlerbehandlung>
}
//empfehlen
versuchen
{
<etwas Logik>
}
Catch(System.NullReferenceException exc)
{
<Fehlerbehandlung>
}
Catch(System.ArgumentOutOfRangeException exc)
{
<Fehlerbehandlung>
}
Catch(System.InvalidCastException exc)
{
<Fehlerbehandlung>
}
9) Bei Verwendung von Try...catch...finally müssen die belegten Ressourcen wie Verbindungen, Dateiströme usw. in final freigegeben werden. Andernfalls können die belegten Ressourcen nicht freigegeben werden, nachdem in Catch ein Fehler abgefangen wurde.
versuchen
{
...
}
fangen
{...}
Endlich
{
Verbindung.close()
}
10) Vermeiden Sie die Verwendung rekursiver Aufrufe und verschachtelter Schleifen. Verwenden Sie sie nur, wenn sie verwendet werden müssen.
11) Verwenden Sie geeignete Caching-Strategien, um die Leistung zu verbessern. Ich werde mehr schreiben, wenn ich Zeit habe.
http://www.cnblogs.com/timone/archive/2006/11/17/563965.html