/Og
(Optymalizacje globalne)
Przestarzałe. Zapewnia optymalizacje lokalne i globalne, alokację automatycznego rejestrowania i optymalizację pętli. Zalecamy zamiast tego użycie opcji /O1
(minimalizuj rozmiar) lub /O2
(Maksymalizuj szybkość).
Składnia
/Og
Uwagi
/Og
jest przestarzały. Te optymalizacje są teraz domyślnie włączone, gdy wszystkie optymalizacje są włączone. Aby uzyskać więcej informacji na temat optymalizacji, zobacz , (Minimalizuj rozmiar, Maksymalizuj szybkość) lub /Ox
(Włącz większość optymalizacji szybkości). /O2
/O1
Następujące optymalizacje są dostępne w obszarze /Og
:
Eliminacja lokalnego i globalnego wspólnego wyrażenia podrzędnego
W tej optymalizacji wartość wspólnego podrażenia jest obliczana raz. W poniższym przykładzie, jeśli wartości
b
ic
nie zmieniają się między trzema wyrażeniami, kompilator może przypisać obliczeniab + c
do zmiennej tymczasowej i użyć tej zmiennej dlab + c
elementu :a = b + c; d = b + c; e = b + c;
W przypadku optymalizacji lokalnego wspólnego wyrażenia podrzędnego kompilator sprawdza krótkie sekcje kodu dla typowych podwyrażeń. W przypadku globalnej optymalizacji wspólnego wyrażenia podrzędnego kompilator wyszukuje całe funkcje dla typowych podexpressionów.
Automatyczna alokacja rejestru
Ta optymalizacja umożliwia kompilatorowi przechowywanie często używanych zmiennych i podexpressionów w rejestrach. Słowo
register
kluczowe jest domyślnie ignorowane i powoduje diagnostykę w obszarze/std:c++17
lub nowszym.Optymalizacja pętli
Ta optymalizacja usuwa niezmienne podrażenia z treści pętli. Pętla optymalna zawiera tylko wyrażenia, których wartości zmieniają się przez każde wykonanie pętli. W poniższym przykładzie wyrażenie
x + y
nie zmienia się w treści pętli:i = -100; while( i < 0 ) { i += x + y; }
Po optymalizacji jest obliczany raz, a nie za każdym razem,
x + y
gdy pętla jest wykonywana:i = -100; t = x + y; while( i < 0 ) { i += t; }
Optymalizacja pętli jest znacznie bardziej skuteczna, gdy kompilator nie może zakładać aliasu, który został ustawiony za pomocą
__restrict
metody ,noalias
lubrestrict
.Uwaga
Optymalizację globalną można włączyć lub wyłączyć na podstawie funkcji przy użyciu
optimize
pragma wraz z opcjąg
.
Aby uzyskać powiązane informacje, zobacz (Generowanie funkcji wewnętrznych) i /Ox
(Włącz większość optymalizacji szybkości)./Oi
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
Wprowadź opcję kompilatora w polu Dodatkowe opcje .
Aby programowo ustawić tę opcję kompilatora
- Zobacz: AdditionalOptions.