Optymalizacje przewodnikiem profilu
Optymalizacja z przewodnikiem profilu umożliwia optymalizację pliku wyjściowego, w przypadku gdy optymalizator używa dane z testów w pliku .exe lub .dll.Dane odpowiadają, jak program jest prawdopodobne wykonać w środowisku produkcyjnym.
Optymalizacje z przewodnikiem profilu są dostępne tylko dla macierzystego obiekty docelowe: x 86, Itanium rodziny procesora (IPF) lub x64.Optymalizacje z przewodnikiem profilu nie są dostępne dla plików wyjściowych, które będą wykonywane w common language runtime.Nawet jeśli produkować zestaw o mieszanych kodu macierzystego i zarządzanego (kompilacji z /clr), nie można używać z przewodnikiem profilu optymalizacji na kodzie macierzystym.Optymalizacje profilu z przewodnikiem nie są również obsługiwane dla aplikacji magazynu systemu Windows.Podczas próby tworzenia projektu za pomocą tych opcji, ustawionych w IDE, spowoduje błąd kompilacji.
[!UWAGA]
Informacje zebrane od profilowania testów zastąpią optymalizacje, które normalnie byłyby w efekcie Jeśli określisz /Ob, /Os, lub /Ot.Aby uzyskać więcej informacji, zobacz /OB (funkcji oródwierszowej rozszerzenia) i / Os, /Ot (kod małych korzyść, korzyść szybki kod).
Poniżej przedstawiono omówienie procesu korzystania z przewodnikiem profilu optymalizacje:
Kompiluj jeden lub więcej plików kodu źródłowego z /GL.
Każdy moduł zbudowany z /GL może być zbadane podczas testów optymalizacji z przewodnikiem profilu do przechwytywania zachowaniem w czasie wykonywania.Każdy moduł w kompilacji optymalizacji z przewodnikiem profilu nie ma latami /GL.Jednak tylko te moduły, które są skompilowane z uwzględnieniem /GL będzie oprzyrządowanego i później dostępne do optymalizacji z przewodnikiem profilu.
Łączenie z /LTCG:PGINSTRUMENT.
/LTCG:PGINSTRUMENT tworzy plik .pgd puste.Po przebieg badania, dane są dodawane do pliku .pgd, to może służyć jako dane wejściowe do następnego kroku łącze (tworzenie zoptymalizowanego obrazu).Podczas określania /LTCG:PGINSTRUMENT, można opcjonalnie określić /PGD pod nazwą inną niż domyślna lub lokalizację dla pliku .pgd.
Profil aplikacji.
Przy każdym PROFILOWANEGO EXE sesja kończy się lub PROFILOWANEGO Biblioteka DLL jest zwalniana, appname! tworzony jest plik #.pgc.Plik .pgc zawiera informacje o jazd testowych w konkretnej aplikacji.# to numer, począwszy od 1, zwiększaną w oparciu o szereg innych appname! #.pgc pliki w katalogu.Można usunąć plik .pgc, jeśli testowa nie reprezentuje scenariusza, który chcesz zoptymalizować.
Podczas próbną, można wymusić zamknięcie pliku .pgc aktualnie otwartego i utworzenie nowego pliku .pgc z pgosweep utility (na przykład, gdy koniec testu scenariusza nie pokrywa się z zamknięcie aplikacji).
Można użyć PogoSafeMode opcji, gdy profil aplikacji.Ta opcja pozwala określić, czy profil aplikacji w trybie awaryjnym lub trybie szybkim.Aby uzyskać więcej informacji na temat tych trybów, zobacz PogoSafeMode.
Związek z /LTCG:PGOPTIMIZE.
/LTCG:PGOPTIMIZE tworzy zoptymalizowany obraz.Przepływ pracy jako wejściowego pliku .pgd.Aby uzyskać więcej informacji, zobacz /LTCG:PGOPTIMIZE.
Istnieje nawet możliwość utworzyć plik wyjściowy zoptymalizowane i okaże się dodatkowe profilowanie się przydatne do tworzenia bardziej zoptymalizowany obraz.Jeśli oprzyrządowanego obrazu i jego pliku .pgd są dostępne, można zrobić dodatkowych testów i odbudowywany obrazu zoptymalizowanego nowszy plik .pgd.
Oto lista optymalizacje z przewodnikiem profilu:
Inline -na przykład, jeśli istnieje funkcja A czy często wywołań funkcji B, a funkcja B jest stosunkowo niewielka, a następnie z przewodnikiem profilu optymalizacje będzie funkcja śródwierszowej B w funkcji A.
Wirtualny spekulacji Call -Jeśli wirtualne wywołanie lub inne wywołanie za pomocą wskaźnika funkcji, często cele pewnych funkcji, optymalizacji z przewodnikiem profilu można wstawić wykonywane warunkowo bezpośrednie wywołanie funkcji często skierowane i bezpośredniego połączenia może być inlined.
Alokacji rejestru — Optymalizacja z danych profilu skutkuje lepiej przydzielaniem rejestrów.
Podstawowe optymalizacji bloku -podstawowy blok optymalizacji pozwala często wykonywane podstawowe bloki, które czasowo są wykonywane w ramach danej ramki mają być umieszczone w ten sam zbiór stron (miejscowości).Pozwala to zmniejszyć liczbę stron, co minimalizuje ilość zajętej pamięci.
Optymalizacja rozmiaru/prędkość -funkcje, gdzie program spędza dużo czasu, można zoptymalizować dla prędkości.
Funkcja układu -na podstawie wykresu wywołanie i zachowanie PROFILOWANEGO rozmówcy/wywoływany, funkcje, które wydają się być w tej samej ścieżce wykonanie są umieszczane w tej samej sekcji.
Warunkowe optymalizacji gałąź -z sondy wartość, z przewodnikiem profilu optymalizacje można znaleźć, jeśli danej wartości w instrukcji switch jest używana częściej niż inne wartości.Wartość tę można następnie wyciągnąć z instrukcji switch.To samo można zrobić z if/else instrukcje gdzie zamówić Optymalizator if/else tak, że albo if lub else blok znajduje się po raz pierwszy w zależności od tego, który blok jest bardziej często true.
Martwe separacji kodu -kod, który nie jest wywoływana podczas profilowania jest przenoszony do specjalnej sekcji, która jest dołączana na końcu zestawu sekcji.Dzięki temu skutecznie w tej sekcji z często stosowane stron.
Oddzielenie kodu EH -The EH, wyjątkowo wykonywania dodatkowego kodu, często mogą być przenoszone do oddzielnej sekcji podczas optymalizacji z przewodnikiem profilu można określić, że wyjątki występują tylko w wyjątkowych warunkach.
Intrinsics pamięci -rozszerzenie intrinsics może zostać podjęta lepiej, jeśli można określić, jeśli wewnętrzne jest nazywany często.Wewnętrzne można także zoptymalizować na podstawie rozmiaru bloku przenoszenia lub kopiowania.
Aby uzyskać więcej informacji, zobacz Walkthrough: Using Profile-Guided Optimizations.
W tej sekcji
Narzędzia dla optymalizacji z przewodnikiem profilu
Jak: scalić wiele profilów PGO jednego profilu