Wskazówki dotyczące wydajności .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ść

Opakowywanie i rozpakowywanie

Najlepiej jest unikać używania typów wartości w sytuacjach, w których muszą być one w pudełku dużą liczbę razy, na przykład w klasach kolekcji innych niż ogólne, 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 obliczeniowym. 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ż proste przypisanie odwołania. W przypadku rozpakowania proces rzutowania może potrwać cztery razy dłużej niż przypisanie. Aby uzyskać więcej informacji, zobacz Boxing and Unboxing (Boxing and 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 Finalize. Po wywołaniu finalizatora moduł bezużyteczny jest wywoływany 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 też