.Net 配置文件引导优化在运行之间是否持续存在以及它们的动态程度如何?

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

这个问题与我关于启用 PGO 的范围的其他问题类似,但这次的范围是指存在优化的二进制代码。

当可执行文件运行时,PGO 会一遍又一遍地重新启动吗?或者当应用程序再次运行时是否会重新使用先前优化的代码? (类似于

ngen.exe缓存

优化是一次性优化还是可以动态适应?例如,如果我们有一个时间跟踪应用程序,每个人都在早上登记入住并特殊退房,但到了晚上,它就会变成每个人都退房而没有人登记入住。它会在白天重新考虑之前的优化版本吗?

有什么方法可以触发它重新优化(类似于 SQL Server 中的 FREEPROCCACHE 来摆脱错误的查询计划),例如如果优化不持续,重新启动进程将是显而易见的答案。

启用 PGO(我们称之为内存泄漏垃圾收集器)后,应重新考虑 IIS 应用程序池设置的高级部分中的常规时间间隔设置,具体取决于上述问题的答案(是否持续)。

希望有人能够对这个很酷的黑匣子功能有所启发!

.net .net-core optimization runtime compiler-optimization
1个回答
0
投票
在正常使用中,PGO 收集的任何数据都不会保留在使用 PGO 的进程范围之外。

方法的优化决策基于前 N 次调用的观察结果(粗略地说,N = 30,但实际上可能更多)。如果方法的行为在较长的时间跨度内发生变化,那么基于对方法行为的初步观察而做出的决策可能会变得次优。目前没有规定在优化方法产生后对其进行修改。

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