.NET 7 已发布第三个预览版


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

Native AOT 编译

Native AOT 的主要优势在于启动时间、内存使用、访问受限平台(不允许 JIT)以及磁盘空间更小。Preview 3 版本对 Native AOT 性能进行了优化更新,以下是最新的 Native AOT 性能(与现有的 AOT 编译 “ReadyToRun” 对比):

接下来的几个 .NET 版本将持续改进 Native AOT 兼容性,且将在 dotnet SDK 中添加一流的支持(Crossgen 应用程序),以支持使用 Native AOT 发布项目。

可观察性

.NET 7 继续发展对云原生 OpenTelemetry 规范的支持。预览版 3 添加了对规范更新的支持 (#988 和 #1708),使得跟踪状态对于采样器可变。

  • 允许跟踪采样器修改活动跟踪状态
 // ActivityListener Sampling callback listener.Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) => { activityOptions = activityOptions with { TraceState = "rojo=00f067aa0ba902b7" }; return ActivitySamplingResult.AllDataAndRecorded; };

改进启动时间

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

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

循环优化

  • 循环克隆 功能将 System.Collections.Tests.Perf_BitArray.BitArrayLeftShift(Size: 512) 的单次调用持续时间提高了 21%:

默认启用 GC 区域

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

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

代码生成

该版本对代码生成和 JIT 编译进行了多项优化和错误修复,比如

  • 为 ARM32 启用快速尾调用优化
  • 将“X & 1 == 1”优化为“X & 1” (#61412)
  • ZeroObj 断言
  • 去重 HWI 代码生成代码
  • 在 x86 上对 8/12 字节结构参数使用 push 

...

 

更多内容可在官方博客中查看。


相关文章

2022-07-14

NET 7 发布了第 6 个预览版。 主要变化包括: 改进 Generic Math,方便 API 作者的使用 为 ML.NET 引入新的 Text Classification API,增加了最先进的深度学习技术对于自然语言处理 对源代码生成器的多项改进 用于 Re

2022-06-16

NET 7 发布了第 5 个预览版。 主要变化包括: 改进 Generic Math,方便 API 作者的使用 为 ML.NET 引入新的 Text Classification API,增加了最先进的深度学习技术对于自然语言处理 对源代码生成器的多项改进 用于 Reg

2022-08-11

Visual Studio 2022 17.3 正式发布,新版本带来了不少微软此前承诺的新功能,如 .NET MAUI GA 工具、Azure Container 应用程序等;以及在开发者社区中建议的新功能。 Visual Studio 2022 v17.3 更新内容如下: MAUI 工作负荷 GA 生成 MAUI/Blazor C

2022-08-12

NET 7 发布了最后一个预览版 Preview 7,在此之后将会进入 RC 阶段。 此版本主要变化包括对 System.LINQ、Unix 文件权限、底层结构、p/Invoke 源代码生成、代码生成和 websocket 的改进。 优化System.LINQ System.Linq现在包含Order和OrderDescen

2022-05-12

NET 7 发布了第 4 个预览版。 重要变化一览 增强 OpenTelemetry 的 .NET 实现的可观测性 为日期和时间结构体增加微秒和纳秒属性 为缓存扩展(caching extensions)引入新指标 提升“On Stack Replacement”性能 增加新的 tar API 优化 .NE

2022-02-28

.NET 首席项目经理凯瑟琳在博客中介绍了 C# 11 的一些预览性新功能,这些功能可以在 Visual Studio 17.1 和 .NET SDK 6.0.200 中体验,下面摘录一部分新特性作介绍: C# 11 预览:允许在内插字符串的“插值表达式”中换行 内插

2022-03-02

Marketplace。这个扩展让开发人员无需离开 Visual Studio 就能预览 ASP.NET 和 ASP.NET Core 项目。该扩展所提供的功能不仅仅只是预览 Web 应用这么简单,使用 Edge 开发者工具做出的修改实际上也会应用于你的源代码之上,这对开发生

2022-04-02

知名软件行业分析公司 RedMonk 发布了 2022 年 1 月(第一季度)。 RedMonk 编程语言排行榜通过追踪编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,统计分析后进行排序,其旨在深入了解潜在的语言采用趋势。该榜

2022-05-26

微软在 Build 2022 大会上发布了一些旨在支持 Windows on Arm 的公告。其中包括宣布推出一款与高通合作创建的,基于 Arm 的开发者设备 Project Volterra。Project Volterra 使用骁龙处理器和神经处理单元(NPU),允许开发者构建云原生 AI 应

2022-09-30

Visual Studio for Mac 17.4 发布了第 2 个预览版。 下载地址:https://visualstudio.microsoft.com/vs/mac/preview/ 主要变化 可通过单击来重新启动调试 新版本增加了一个方便的功能,开发者只需点击一次按钮即可重新启动调试。如下图

2022-07-15

 .NET 7  内置了速率限制(Rate Limiting)功能,速率限制指的是限制可访问资源的请求数。例如数据库每分钟可以安全处理 1000 个请求,再多不确定会不会崩。这时就可以在应用程序中放一个速率限制器,规定每分钟只允许

2022-09-20

Visual Studio 2022 17.4 上周发布了第 2 个预览版。 下载地址:https://visualstudio.microsoft.com/vs/preview/ 主要变化 引入回滚 Visual Studio 更新的功能 允许多个 Git 存储库一次性处于活动状态 向测试资源管理器添加按钮以将测试重

2022-09-22

9月15日,开源操作系统社区OpenCloudOS宣布发布第二个社区稳定版 OpenCloudOS 8.6。 OpenCloudOS 8.6 版本采用了更加灵活的图形安装方式,支持业务场景的自定义分区、文件系统选择,支持多种国际语言的选择,支持多种不同场景软

2022-09-21

JDK 19 / Java 19 已正式发布。 新版本总共包含 7 个新的 JEP: 405: Record Patterns (Preview) 422: Linux/RISC-V Port 424: Foreign Function & Memory API (Preview) 425: Virtual Threads (Preview) 426: Vector API (Fourth Incubator) 42