Udostępnij za pośrednictwem


Porady dotyczące wydajności platformy .NET

Termin wydajność zazwyczaj odnosi się do szybkości wykonywania programu. Czasami można zwiększyć szybkość wykonywania, postępując zgodnie z pewnymi podstawowymi regułami w kodzie źródłowym. W niektórych programach ważne jest, aby dokładnie zbadać kod i użyć profilatorów, aby upewnić się, że działa tak szybko, jak to możliwe. W innych programach nie trzeba wykonywać takiej optymalizacji, ponieważ kod działa w sposób akceptowany w miarę jego pisania. W tym artykule wymieniono niektóre typowe obszary, w których wydajność może cierpieć i wskazówki dotyczące jego poprawy, a także linki do dodatkowych tematów dotyczących wydajności. Aby uzyskać więcej informacji na temat planowania i mierzenia wydajności, zobacz Wydajność

Pakowanie i rozpakowywanie

Najlepiej jest unikać używania typów wartości w sytuacjach, w których muszą być one konwertowane do obiektu dużą liczbę razy, na przykład w klasach kolekcji niegenerycznych, takich jak System.Collections.ArrayList. Można uniknąć tworzenia pól typów wartości przy użyciu kolekcji ogólnych, takich jak System.Collections.Generic.List<T>. Boxing i unboxing są kosztownymi procesami obliczeniowymi. Gdy typ wartości jest w polu, należy utworzyć całkowicie nowy obiekt. Może to potrwać do 20 razy dłużej niż prosta operacja przypisania. Podczas rozpakowywania proces rzutowania może potrwać cztery razy dłużej niż przypisanie. Aby uzyskać więcej informacji, zobacz Boxing i Unboxing.

Ciągi

Podczas łączenia dużej liczby zmiennych ciągów, na przykład w ciasnej pętli, użyj System.Text.StringBuilder zamiast operatora C# + lub operatorów łączenia języka Visual Basic. Aby uzyskać więcej informacji, zobacz Jak połączyć wiele ciągów i operatorów łączenia w Visual Basic.

Finalizatory

Puste finalizatory nie powinny być używane. Gdy klasa zawiera finalizator, wpis jest tworzony w kolejce finalizacji. Gdy finalizator zostanie wywołany, mechanizm usuwania śmieci zostaje uruchomiony w celu przetworzenia kolejki. Jeśli finalizator jest pusty, spowoduje to po prostu utratę wydajności. Aby uzyskać więcej informacji, zobacz Finalizers and Object Lifetime: How Objects are Created and Destroyed (Finalizatory i okres istnienia obiektu: jak obiekty są tworzone i niszczone).

Inne zasoby

Zobacz także