Blu*_*rat 8 .net-standard-2.0 .net-6.0
如果我有一个 .NET Standard 2.0 库项目正在被 .NET 6.0 控制台项目使用,那么如果我还指示编译器生成该库的 .NET 6.0 版本,是否会有任何性能优势?
我不打算使用 .NET 6.0 上提供的任何功能,我只是想知道 .NET 6.0 版本是否受到编译器的额外喜爱。
Blu*_*rat 12
在 Twitter 上问了同样的问题,并很幸运地收到了知名专家Bartosz Adamczewski、Immo Landwerth、Jared Parsons和Lucas Trzesniewski的反馈
\n这是问题链接。
\n以下是您可以从原始 Twitter 帖子中提取的最相关的信息:
\n\n\n您可能会获得更好的 IL,因此前端编译器 C# 可以更好地处理字符串和某些\n其他内容,并生成\n更好的 IL,这反过来又可以在 JIT 中提供更好的代码生成 - Bartosz Adamczewski
\n
\n\n@jaredpar 可以纠正我,但在大多数情况下,代码生成是 \xe2\x80\x99t\n 取决于目标框架,除了代码生成\n用户特定 API 的情况,这种情况很少见。——伊莫·兰德沃斯
\n
\n\n那是对的。在编译器级别,没有目标框架的概念,只有引用。因此,有关代码\ngen 的所有决策均基于参考文献中的 API。——贾里德·帕森斯
\n
\n\n对于 .NET 6,您将可以访问一些新的 API,例如 \n
\nDefaultInterpolatedStringHandler,因此,例如,所有字符串插值表达式 ($"...") 将通过目标\n获得性能提升net6.0。此外,还有新的方法重载,例如StringBuilder.Append将字符串插值处理程序作为参数。您的字符串插值表达式将针对这些\而不是针对 net6.0,并且您的代码将分配少于\非其他目标。所以,是的,在某些情况下,如果您添加 net6.0 目标,您的代码将得到编译器的更多\n喜爱 - Lucas\nTrzesniewski
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |