2

.NET 6 Preview 3 发布

 3 years ago
source link: https://www.cnblogs.com/hez2010/p/dotnet-6-preview3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言#

2021/4/8 .NET 6 Preview 3 发布,这个版本的改进大多来自于底层,一起来看看都有什么新特性和改进吧。

库改进#

新增值类型作为字典值时更快的处理方法#

.NET 6 Preview 3 引入了新的 unsafe API CollectionsMarshal.GetValueRef,这个 API 允许你在无数据拷贝的情况下就地更新值,并且将键的哈希计算从 2 次减少到 1 次。该改进在高性能场景下更新字典中存储的 struct 非常有用。

ref MyStruct value = CollectionsMarshal.GetValueRef(dictionary, key);
// 如果不存在则返回 Unsafe.NullRef<TValue>()
if (!Unsafe.IsNullRef(ref value))
{
    // 无需拷贝,就地更新
    value.MyInt++;
}

接口检查和转换性能提升#

接口的转换以及检查类型是否实现某接口的性能提升了 16~38%,该改进对模式匹配的性能提升尤其有用。

运行时#

.NET 6 Preview 3 也包含更多的运行时改进

代码生成优化#

动态 PGO#

在寄存器中保持值类型结构#

完成 .NET 6 异常处理器写直通#

.NET 热重载对 Web 应用初步可用#

.NET 6 Preview 3 启用了对 ASP.NET Core 和 Blazor 热重载的初步支持,只需要通过 dotnet watch 启动项目即可使用,不过需要修改 Properties/launchSettings.json 后才能使用热重载:

对于 ASP.NET Core 应用,添加 "hotReloadProfile": "aspnetcore";对于 Blazor WebAssembly 应用,添加 "hotReloadProfile": "blazorwasm"

热重载可以在不重新启动应用程序,并且也不丢掉上下文和应用状态的情况下直接应用代码的更新。该功能不依赖 Visual Studio,即使你用记事本修改代码也一样能进行热重载。

另外,这只是 .NET 6 热重载第一步,后续还会为其他所有类型的 .NET 应用开发启用热重载支持。

结语#

关于 ASP.NET Core 和 EntityFramework Core 其实还有更多的更新内容,但是这里就不一一介绍了。

以上就是 .NET 6 Preview 3 中包含的部分更新内容,感谢阅读。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK