/volatileMetadata
(Generuj metadane na nietrwałych dostępach do pamięci)
Generowanie metadanych dla nietrwałych dostępu do pamięci w celu zwiększenia wydajności podczas uruchamiania kodu x64 w usłudze ARM64.
Składnia
/volatileMetadata[-]
Argumenty
-
Wyłącza funkcję /volatileMetadata
. Może to spowodować pogorszenie wydajności, gdy kod działa w trybie emulacji w usłudze ARM64, ponieważ emulator pesymistycznie zakłada, że każde obciążenie/magazyn wymaga bariery.
Uwagi
Począwszy od programu Visual Studio 2019 16.10, /volatileMetadata
jest domyślnie włączony podczas generowania kodu x64. Poprawia wydajność emulacji kodu x64 w usłudze ARM64, generując metadane identyfikujące nietrwałe adresy pamięci. Emulator może użyć tych metadanych, aby zwiększyć wydajność, nie używając semantyki uzyskiwania/wydawania tych, do których uzyskuje dostęp, nie są niestabilne. Bez tych metadanych emulator zakłada, że wszystkie adresy są nietrwałe i używają semantyki uzyskiwania i wydawania.
Jednym z efektów ubocznych /volatileMetadata
jest to npad
, że makra są używane w wygenerowany kod. To makro rozszerza określoną liczbę instrukcji NOP
, które tworzą adres do skojarzenia z barierą pamięci. Ten adres jest następnie rejestrowany w metadanych, aby wskazać, że semantyka uzyskiwania/wydawania powinna być używana do uzyskiwania do niego dostępu.
/volatileMetadata
element jest ignorowany podczas określania wartości docelowej x86.
/volatileMetadata
można wyłączyć za pomocą polecenia /volatileMetadata-
.
Wymagania
Visual Studio 2019 w wersji 16.10 lub nowszej.
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC