Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
bicnie zmieniają się między trzema wyrażeniami, kompilator może przypisać obliczeniab + cdo zmiennej tymczasowej i użyć tej zmiennej dlab + celementu :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
registerkluczowe jest domyślnie ignorowane i powoduje diagnostykę w obszarze/std:c++17lub 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 + ynie 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 + ygdy 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ą
__restrictmetody ,noaliaslubrestrict.Uwaga
Optymalizację globalną można włączyć lub wyłączyć na podstawie funkcji przy użyciu
optimizepragma 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.