cod*_*nix 11 .net documentation optimization jit .net-core
具体是MethodImplOptions.AggressiveOptimization做什么的?
微软的文档并没有告诉我太多信息。在什么情况下可以有用?
我会在文档中而不是在.net core github或发行说明中查找更多详细信息(如果这就是您正在寻找的信息)。
让我们首先看看后者。对于.net core 3.0,我们可以找到以下条目:
完全优化的 JIT 会以更慢的速度生成更高质量(或更优化)的代码。对于不使用快速 JIT 的方法(例如,如果该方法归因于 MethodImplOptions.AggressiveOptimization),则使用完全优化的 JIT。
因此,首先,我们知道,如果一个方法标记有这样的属性,则应该使用完全优化的 JIT 对其进行 JIT 处理,这可能会产生更好、更优化的代码 - 但会花费更多时间来编译。
现在让我们关注 github,看看我们能在那里找到什么。
关于此问题的讨论已在本票中完成,并且提供了该主题的更多详细信息。
该标志可以用在 MethodImplAttribute 中来指示该方法包含热代码:
- 对于分层,它可能会导致第 1 层 JIT 立即用于方法[...]
- 它可以允许 JIT 花费更多的 JIT 时间来生成更好的代码,例如更积极地内联到函数中
由此我们可以得到答案,在什么情况下可以使用它,以及它在底层做什么。
在我们处理热路径代码的情况下 - 该属性对于 JIT 非常有用,可以生成更快、更优化的代码,而不是进行分层编译。如果运行时检测到它实际上位于热路径上,那么在开始时使用更多时间可以节省以后的时间。
还有一个关于此标志的其他用法的有趣讨论,您可以阅读。
但最终的真相(我希望)和承诺与此讨论相关,因此我们可以查看它们。从这些提交和提交消息中,我们可以了解到这实际上是分层编译和 JIT 所发生的情况(至少这是我所看到的)。
| 归档时间: |
|
| 查看次数: |
2831 次 |
| 最近记录: |