Wydajność — Ostrzeżenia
Ostrzeżenia wydajności obsługi bibliotek wysokiej wydajności i aplikacji.
W tej sekcji
Reguła |
Opis |
---|---|
CA1800: Nie przeprowadzaj niepotrzebnych operacji rzutowania |
Zduplikowane rzutowania zmniejszyć wydajność, zwłaszcza gdy rzutowania wykonywane są w niedużej iteracji. |
Podpis metody zawiera parametr, który nie jest używany w treści metody. |
|
CA1802: Używaj literałów wszędzie, gdzie jest to odpowiednie |
Pole jest zadeklarowany jako statyczny i tylko do odczytu (Shared i tylko do odczytu w Visual Basic) i jest inicjowana z wartością, która jest obliczalna w czasie kompilacji.Ponieważ wartość, która jest przypisana do pola docelowego jest obliczalna w czasie kompilacji, należy zmienić deklaracje pola na stałą (Const w Visual Basic), dzięki czemu wartość jest obliczana w czasie kompilacji, zamiast w czasie wykonywania. |
Nieużywane zmienne lokalne i niepotrzebne przydziały zwiększają rozmiar zestawu i zmniejszają wydajność. |
|
Zostanie utworzony nowy obiekt, ale nigdy nie używane, wywoływana jest metoda, która tworzy i zwraca nowy ciąg i nigdy nie jest używany nowy ciąg lub hosta skryptów systemu Windows (COM, Component Object Model) lub P/Invoke metoda zwraca błąd HRESULT lub kod, który nigdy nie jest używany. |
|
Typowa optymalizacja wydajności polega na przechowywaniu wartości w rejestrze procesora zamiast pamięci, co są określone jako "rejestrowanie wartości". Aby zwiększyć szanse, że wszystkie zmienne lokalne są przechowywane w rejestrze procesora, należy ograniczyć liczbę zmiennych lokalnych do 64. |
|
CA1810: Zainicjuj wbudowane pola statyczne typu referencyjnego |
Podczas gdy typ deklaruje jawny, statyczny konstruktor, kompilator just in time (JIT) dodaje sprawdzenie do każdej metody i konstruktora wystąpienia, aby upewnić się, że konstruktor statycznym został wcześniej wywołany.Sprawdzenia statycznego konstruktora mogą obniżyć wydajność. |
Prywatne lub wewnętrzne członek (poziom zespołu) nie ma dzwoniącym w zestawie, nie jest wywoływany przez aparatu plików wykonywalnych języka wspólnego i nie jest wywoływany przez pełnomocnika. |
|
Wystąpienie typu na poziomie zestawu nie jest tworzone przez kod w zestawie. |
|
Biblioteka klas .NET Framework zawiera metody do pobierania atrybutów niestandardowych.Domyślnie te metody wyszukują hierarchie dziedziczenia atrybutu.Plombowanie atrybutu eliminuje wyszukiwanie przez hierarchię dziedziczenia i może zwiększyć wydajność. |
|
CA1814: Wybieraj tablice nieregularne zamiast wielowymiarowych |
Nieregularna tablica to tablica, której elementy są tablicami.Można to tablice, które składają się elementy o różnej wielkości, które mogą doprowadzić do mniej nieużywanego miejsca na niektóre zestawy danych. |
CA1815: Zastąp metodę equals i operator równości dla typów wartości |
Dla typów wartości, dziedziczona implementacja operatora Equas wykorzystuje bibliotekę refleksji i porównuje zawartość wszystkich pól.Odbicie jest obliczeniowo kosztowne, a porównanie równości każdego pola może być niepotrzebne.Jeśli oczekujesz, że użytkownicy będą porównywać lub sortować wystąpienia lub używać wystąpień jako kluczy tabel haszowanych, typ wartości powinien implementować Equals. |
Metoda, która jest implementacją zbywania nie wymaga GC.SuppressFinalize lub metodą, która nie jest implementacją zbywania wywołuje GC.SuppressFinalize lub metoda wywołuje GC.SuppressFinalize i przekazuje coś innego niż to (mi w Visual Basic). |
|
Tablicach, które są zwracane przez właściwości nie są chronionym przed zapisem, nawet jeśli właściwość jest tylko do odczytu.Aby zachować tablicę odporną na manipulacje właściwość musi zwracać kopię tablicy.Zazwyczaj użytkownicy nie rozumieją niekorzystnych następstw wydajnościowych wywołania takiej właściwości. |
|
CA1820: Zbadaj pod kątem ciągów pustych przy użyciu długości ciągu |
Porównywanie ciągów za pomocą właściwości String.Length lub metody String.IsNullOrEmpty jest znacznie szybsze niż użycie operatora Equals. |
Jeśli to tylko możliwe, należy unikać finalizatorów ze względu na dodatkowe obciążenie, które bierze udział w śledzeniu okresu istnienia obiektu.Pusty finalizatorów ponosi dodaje narzutów bez żadnych korzyści. |
|
Elementy członkowskie, które nie uzyskują dostępu do danych wystąpienia i nie wywołują metod wystąpienia mogą zostać oznaczone jako statyczne (Współdzielone w Visual Basic).Po oznaczeniu metod jako statyczne, kompilator wygeneruje niewirtualne strony wywołań do tych członków.To może dać wymierny zysk wydajnościowy dla kodu wrażliwego na wydajność. |
|
Wykryte zostały pola prywatne, do których nie następuje dostęp w zestawie. |
|
CA1824: Oznacz zestawy za pomocą NeutralResourcesLanguageAttribute |
Atrybut NeutralResourcesLanguage informuje ResourceManager języka, który był używany do wyświetlania zasobów neutralnej kultury dla zestawu.To zwiększa wydajność wyszukiwania dla pierwszego zasobu, który się ładuje i może zmniejszyć zestaw roboczy. |