.NET-Leistungstipps

Der Begriff Leistung bezieht sich im Allgemeinen auf die Ausführungsgeschwindigkeit eines Programms. In manchen Fällen können Sie die Ausführungsgeschwindigkeit erhöhen, indem Sie im Quellcode bestimmte Grundregeln befolgen. In einigen Programmen müssen Sie den Code genau untersuchen und mithilfe von Profilern sicherstellen, dass dieser so schnell wie möglich ausgeführt wird. In anderen Programmen müssen Sie keine solche Optimierung ausführen, da Code in der aktuellen Form mit akzeptabler Geschwindigkeit ausgeführt wird. Dieser Artikel beschreibt einige häufige Bereiche, in denen die Leistung abnehmen kann, und enthält Tipps zur Verbesserung sowie Links zu weiteren Leistungsthemen. Weitere Informationen zum Planen und Messen der Leistung finden Sie unter Performance.

Boxing und Unboxing

Am besten verwenden Sie keine Werttypen in Situationen, in denen sie öfter geschachtelt werden müssen, z. B. in nicht generischen Auflistungsklassen wie System.Collections.ArrayList. Sie können die Schachtelung von Werttypen vermeiden, indem Sie generische Auflistungen, z. B. System.Collections.Generic.List<T>, verwenden. Boxing und Unboxing sind rechenintensive Prozesse. Wenn ein Werttyp geschachtelt wird, muss ein völlig neues Objekt erstellt werden. Dies kann bis zu 20-mal länger dauern als eine einfache Zuweisung eines Verweises. Eine Umwandlung durch Unboxing kann vier Mal mehr Zeit beanspruchen als eine Zuweisung. Weitere Informationen finden Sie unter Boxing und Unboxing.

Zeichenfolgen

Wenn Sie eine große Anzahl von Zeichenfolgenvariablen verketten, z.B. in einer dichten Schleife, verwenden Sie System.Text.StringBuilder anstelle des + Operators in C# oder der Visual Basic-Verkettungsoperatoren. Weitere Informationen finden Sie unter Verketten von Zeichenfolgen und unter Verkettungsoperatoren in Visual Basic.

Finalizer

Leere Finalizer sollten nicht verwendet werden. Wenn eine Klasse einen Finalizer enthält, wird ein Eintrag in der Finalize-Warteschlange erstellt. Wenn der Finalizer aufgerufen wird, wird der Garbage Collector aufgerufen, um die Warteschlange zu verarbeiten. Wenn der Finalizer leer ist, bewirkt dies lediglich eine geringere Leistung. Weitere Informationen finden Sie unter Finalizer und unter Objektlebensdauer: Erstellen und Zerstören von Objekten.

Weitere Ressourcen

Siehe auch