csproj 文件中 TieredPGO(.Net Profile Guided Optimization)的范围是什么

问题描述 投票:0回答:1

文档非常简短。只需添加:

<PropertyGroup>
    <TieredPGO>true</TieredPGO>
</PropertyGroup>

在您的 .csproj 文件中,将启用配置文件引导优化,或添加环境变量

DOTNET_TieredPGO
并将其设置为
1

我假设这是一个进程范围的设置(特别是因为它可以通过环境变量设置),所以我们不需要将这些行添加到库和 DLL 中,只需添加到主应用程序(带有

Main(string[] args) 的应用程序) 
入口点)。还是我错了?

如果它包含在 DLL 中但不包含在主应用程序中会发生什么?

当托管在父进程(例如 IIS 中的 AspNetCoreModule)中时,它也适用吗?

如果不复制配置文件,设置会在构建部署链中丢失吗?

它是嵌入到二进制文件中的标志吗(如 CoreFlags)?

(另请参阅我的其他问题关于优化代码持久性的范围)

.net .net-core optimization runtime compiler-optimization
1个回答
0
投票

PGO 是进程范围的设置,因此如果在环境中指定,则从该环境启动的所有进程都将使用它;如果在项目文件或运行时配置中指定,则仅当该模块是主要可执行文件时才适用。

对于 ASP.NET,可能发生的情况取决于您是否在进程外启动进程中的东西,尽管我不太熟悉那里的细节。

注意,在 .NET 8 中此功能默认启用,因此无需配置它(除非您想禁用)。

© www.soinside.com 2019 - 2024. All rights reserved.