• .NET 7 Preview 3添加了这些增强功能


    .NET 7 Preview 3 已发布, .NET 7 的第三个预览版包括对可观察性、启动时间、代码生成、GC Region、Native AOT 编译等方面的增强。

    有兴趣的用户可以下载适用于 Windows、macOS 和 Linux 的 .NET 7 Preview 3。Microsoft 建议使用Visual Studio 17.2 Preview 3 的 预览频道版本来试用 .NET 7。

    Native AOT 编译

    简而言之,Ahead of Time(AOT)编译可以预先构建所有内容,以避免在应用程序首次运行时需要“JIT”。很长一段时间以来,.NET 团队一直在不知疲倦地工作,为dotnet带来适当的Native pre-Time编译。虽然部分AOT一直存在,但完全的“真实”支持从未开箱即用。

    使用Native AOT,将预编译引入 .NET 桌面客户端和服务器方案ReadyToRun,以及适用于移动设备和 WASM 的 Mono AOT。根据.NET团队博客的说法,添加这一功能并不是为了取代现有技术,而是为了提供一组新的功能,允许用户访问新的外形规格。 Native AOT 的主要优势在于启动时间、内存使用、访问受限平台(不允许 JIT)以及磁盘空间更小。Preview 3 版本对 Native AOT 性能进行了优化更新,以下是最新的 Native AOT 性能(与现有的 AOT 编译 “ReadyToRun” 对比):

    image

    接下来的几个 .NET 版本将持续改进 Native AOT 兼容性,且将在 dotnet SDK 中添加一流的支持(Crossgen 应用程序),以支持使用 Native AOT 发布项目。 有关原生AOT如何工作以及如何开始的更多信息,请查看官方文档

    
    

    可观察性

    此预览版还添加了对新的云原生 OpenTelemetry 规范的支持。这包括规范更新 #988#1708,它们使采样器的跟踪状态可变。

        //  ActivityListener Sampling callback
        listener.Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) =>
        {
            activityOptions = activityOptions with { TraceState = "rojo=00f067aa0ba902b7" };
            return ActivitySamplingResult.AllDataAndRecorded;
        };

    System.Composition.Hosting

    有了这个,最新的托管扩展性框架也进行了小的更新,以便与以前版本的API保持一致。使用新的 API,可以将单个对象实例添加到 System.Composition.Hosting 容器中

    启用“Write-Xor-Execute”缩短了启动时间

    性能仍然是 .NET 7 的主要关注点。dotnet/runtime#65738 PR ,重新实现了预代码和调用计数存根(使用分层编译帮助程序存根),可显著减少运行时中创建后再修改的可执行代码数量。

    启用该 Write-Xor-Execute 新功能可缩短 10-15% 启动时间。即使没有启用 Write-Xor-Execute,此更改也带来了一些微基准测试和一些 ASPNet 基准测试的稳态性能提高(高达 8%)。

    默认启用 GC Regions

    在 Preview 3 中,除了 MacOS 和 NativeAOT 之外的所有平台都默认启用 GC Regions功能,该功能有助于提升高吞吐量应用程序的内存利用率。

    有关 GC Regions 功能的详细信息可在该 Issue 中查看

    从 .NET 6 升级

    正如我们之前所讨论的,从.NET 6升级到7应该很简单,并且升级失败的可能性很小,但并非不可能。

    在继续之前,请确保已备份项目,然后打开项目文件并修改目标框架属性。

    <TargetFramework>net7.0</TargetFramework>

    在很大程度上,Microsoft 将 .NET 7 Preview 3 中包含的大量优化和错误修复归功于社区贡献者。其中包括对代码生成和实时编译所做的修复。

    有关此预览版的详细信息,请参阅.NET团队官方博客文章。它还包含有关路线图项目的一些非常有趣的信息。

  • 相关阅读:
    localhost知识
    如何用scratch的“变量和链表”解决“洛书”问题(九宫格)
    js双击修改元素内容并提交到后端封装实现
    华为HCIA(六)
    C#生成自定义海报
    13.linux进程基础
    linux命令之cal详解
    【UE 粒子练习】03——创建一个GPU粒子
    在没有康托尔对角化方法的情况下证明实数的不可数性
    我是如何写作的?
  • 原文地址:https://www.cnblogs.com/shanyou/p/16151194.html