.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-10-17

NET 7 RC2 已作为 .NET 7 的最新候选版本 (RC)发布,该版本已通过 Visual Studio 17.4 Preview 3测试,并在生产环境中得到支持。 点此下载适用于 Windows、macOS 和 Linux 的 .NET 7 RC2。如需在 Visual Studio 系列产品中试用 .NET 7,建议使用预览

2023-06-15

Visual Studio 17.7 发布第二个预览版,此版本包括改进的调试功能、外部 .NET 代码的自动反编译、多项 C++ 嵌入式和游戏开发改进等。 改进的文件比较 可在解决方案资源管理器中选择两个文件,并使用新的“比较所选”选项比较

2023-02-18

微软多少年以前就开始推进 Arm 版 Windows 的发展(2012 年发布的 Windows RT),即便到了 2023 年又有多少开发者开发了 Arm 版 Windows 应用呢。 微软日前推出了一个适用于 Visual Studio 的扩展程序 —— .NET Upgrade Assistant,让开发者可以

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

2023-05-15

Ruby 3.3.0-preview1 已发布,作为 3.3 的第一个预览版。Ruby 3.3 最重大的改动是添加了一个名为 RJIT 的新纯 Ruby JIT 编译器,使用 Lrama 作为解析器生成器,并带来许多性能改进。 RJIT Ruby 3.3.0-preview1 引入纯 Ruby JIT 编译器 RJIT 替换了 MJI

2022-08-12

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

2023-03-02

Visual Studio 2022 17.6 的首个预览版现已发布!此版本扩展了最近发布的 17.5 版 Visual Studio,旨在提高您的工作效率,无论您是 .NET 开发人员、游戏开发人员和/或 C++ 开发人员。 新功能概览: IDE 生产力 括号对着色 Git 行取

2023-11-26

LibreOffice 7.6 社区版发布了第三个补丁更新:7.6.3,支持 Windows(Intel/AMD 和 ARM 处理器)、macOS(Apple 和 Intel 处理器),以及 Linux 系统。 下载地址 | Release Notes LibreOffice 7.6 引入的新功能包括:支持触摸板上的缩放手势、支持文

2023-11-16

适配 .NET8.0 于 2023年11月15日,微软正式对外发布了 .NET8.0 正式版。 Furion 开发团队第一时间进行了升级适配,这一次升级非常顺利,升级过程中只遇到两个破坏性更改(都是运行时错误),所以迅速发布了 v4.9.0,v4.9.0.1,v4.9.1

2023-07-14

ShopWind 多商户商城系统 v4.3发布更新,PHP+MySQL,服务端 Yii2 框架,移动端 uniapp。使用 vue3/vite、Element Plus UI、 axios 数据请求、页面异步加载。 本次更新新增移动端发布商品增加商品类型、DIY装修、新增商品采集插件【行云货

2022-04-02

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

2022-05-12

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