/volatileMetadata (在易失性内存访问上生成元数据)

在 ARM64 上运行 x64 代码时,为易失性内存访问生成元数据以提高性能。

语法

/volatileMetadata[-]

参数

-
关闭 /volatileMetadata。 当代码在 ARM64 上的仿真模式下运行时,这可能会导致性能更差,因为模拟器悲观地假设每个加载/存储都需要屏障。

注解

从 Visual Studio 2019 16.10 开始, /volatileMetadata 生成 x64 代码时默认处于打开状态。 它通过生成标识易失性内存地址的元数据来提高 ARM64 上的 x64 代码的仿真性能。 仿真器可以使用此元数据来改进性能,方法是不对所知道的访问使用获取/发布语义。 如果没有此元数据,模拟器假定所有地址都是易失的,并且使用获取和释放语义。

其中 /volatileMetadata 一个副作用是,你可能会看到 npad 生成的代码中使用的宏。 此宏扩展到指定数量的 NOP 指令,这些指令创建与内存屏障关联的地址。 然后,该地址将记录在元数据中,以指示应使用获取/发布语义来访问该地址。

/volatileMetadata 当面向 x86 时,将忽略。

可以使用 /volatileMetadata- 禁用 /volatileMetadata

要求

Visual Studio 2019,版本 16.10 或更高版本。

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法