Optymalizacja kodu

Optymalizując plik wykonywalny, można osiągnąć równowagę między szybkością szybkiego wykonywania a małym rozmiarem kodu. W tym temacie omówiono niektóre mechanizmy zapewniane przez program Visual Studio, które ułatwiają optymalizowanie kodu.

Funkcje językowe

W poniższych tematach opisano niektóre funkcje optymalizacji w języku C/C++.

Optymalizacja pragm i słów kluczowych
Lista słów kluczowych i pragma, których można użyć w kodzie w celu zwiększenia wydajności.

Opcje kompilatora w rozbiciu na kategorie
Lista opcji kompilatora /O , które mają wpływ na szybkość wykonywania lub rozmiar kodu.

Deklarator odwołania do wartości R: &&
Odwołania do wartości R obsługują implementację semantyki przenoszenia. Jeśli semantyka przenoszenia jest używana do implementowania bibliotek szablonów, wydajność aplikacji korzystających z tych szablonów może znacznie poprawić.

Optymalizowanie pragma

Jeśli zoptymalizowana sekcja kodu powoduje błędy lub spowolnienie, możesz użyć optymalizowania pragma, aby wyłączyć optymalizację dla tej sekcji.

Ująć kod między dwoma pragmaami, jak pokazano poniżej:

#pragma optimize("", off)
// some code here
#pragma optimize("", on)

Praktyki programistyczne

Podczas kompilowania kodu przy użyciu optymalizacji mogą zostać wyświetlone dodatkowe komunikaty ostrzegawcze. To zachowanie jest oczekiwane, ponieważ niektóre ostrzeżenia odnoszą się tylko do zoptymalizowanego kodu. Jeśli te ostrzeżenia zostały zwrócone, możesz uniknąć wielu problemów z optymalizacją.

Paradoksalnie optymalizacja programu pod kątem szybkości może spowodować spowolnienie działania kodu. Wynika to z faktu, że niektóre optymalizacje szybkości zwiększają rozmiar kodu. Na przykład wbudowane funkcje eliminują obciążenie wywołań funkcji. Jednak tworzenie zbyt dużej ilości kodu może sprawić, że program będzie tak duży, że liczba błędów strony pamięci wirtualnej zwiększa się. W związku z tym szybkość uzyskana z eliminacji wywołań funkcji może zostać utracona do zamiany pamięci.

W poniższych tematach omówiono dobre praktyki programistyczne.

Wskazówki dotyczące poprawiania kodu wrażliwego na czas
Lepsze techniki kodowania mogą przynieść lepszą wydajność. W tym temacie przedstawiono techniki kodowania, które mogą pomóc w upewnieniu się, że części kodu o krytycznym czasie działają w sposób zadowalający.

Najlepsze rozwiązania dotyczące optymalizacji
Zawiera ogólne wskazówki dotyczące najlepszego sposobu optymalizacji aplikacji.

Debugowanie zoptymalizowanego kodu

Ponieważ optymalizacja może zmienić kod utworzony przez kompilator, zalecamy debugowanie aplikacji i mierzenie jej wydajności, a następnie optymalizowanie kodu.

Poniższe tematy zawierają informacje o sposobie debugowania kompilacji wydania.

Poniższe tematy zawierają informacje na temat optymalizowania kompilowania, ładowania i wykonywania kodu.

W tym obszarze

Optymalizacja pragm i słów kluczowych
Poprawianie wydajności kompilatora
Dlaczego liczby zmiennoprzecinkowe mogą tracić dokładność
Odwzorowanie liczby zmiennoprzecinkowej IEEE
Wskazówki dotyczące poprawiania kodu wrażliwego na czas
Korzystanie z nazwy funkcji bez () nie tworzy kodu
Najlepsze rozwiązania dotyczące optymalizacji
Optymalizacje sterowane profilem
Zmienne środowiskowe dla optymalizacji sterowanych profilem
PgoAutoSweep
pgomgr
pgosweep
Instrukcje: scalanie wielu profili PGO w jeden profil

Zobacz też

Dokumentacja kompilacji w języku C/C++