在4月2日,发布了.net 5.0 preview2,这次发布对一些功能和性能做了相关的改进,同时后面也会实施5.0版本更多的功能,其中一些功能设计目前也在中显示,在.net 5 preview1中可以看到.net 5里程碑中已经完成的建设任务,当然可以查看相关的设计资料进行反馈,同时可以下载preview2并进行测试他。

可以在windows macos和linux下载.net 5 preview2

  • .net 5 preview2 and runtimes
  • docker images
  • snap installer

asp.net core和ef core也在当天发布。

必须要使用visual studio 2019 16.6才可以使用.net 5.0。安装最新版本的c# 扩展,将.net 5.0在visualstudio code中使用,目前还不支持mac的visual studio.

发行说明:

  • .net 5.0 preview2发行说明
  • .net 5.0已知问题
  • github中issues

ryujit中代码质量的改进

每个版本都包含着一些更改,这些更改可以改进jit生成的机器代码(它被称为“code quality”).更好的代码质量意味着更好的性能。总而言之,下面改进中一半的是实际的新优化,另一半是由于更改ryujit的流程而使现有优化能够应用到更多的代码中.

  • use xmm for stack prolog – dotnet/runtime #32538 更改为x86/x64 prolog归零代码,改进:json;
  • add valuenumbering support for gt_simd and gt_hwintrinsic tree nodes – dotnet/runtime #31834 —为simd和硬件固有类型启用优化器。
  • use gt_nullcheck for unconsumed indirections – dotnet/runtime #32641—删除冗余null检查。
  • —改善优化nullable 。
  • optimize range checks for various array index patterns – dotnet/runtime #1644-消除 range checks 的改进。
  • optimize obj.gettype() != typeof(x) for sealed classes – dotnet/runtime #32790-改进了类型检查表达式。
  • eliminate duplicate zero initializations more aggressively – dotnet/runtime #31960—更好和更广泛的方法,以消除重复零初始化。
  • fix method and basic block flags used by early opts – dotnet/runtime #2196
  • 优化某些可以频繁使用,现在更经常地用常数替换数组长度。

垃圾收集器

  • card mark stealing – dotnet/coreclr #25986- 服务器gc(位于不同线程上)可以在标记由较早一代对象保留的gen0/ 1对象时进行执行获取。 这意味着,对于某些gc线程要花费更长的时间进行标记的情况,短暂的gc暂停时间较短。
  • introducing pinned object heap – dotnet/runtime #32283 — 实现了poh(pinned object heap)功能的一部分– gc内部的一部分。 这个新的堆(本质上是loh的对等体)将允许gc分别管理固定对象,从而避免固定对象对世代堆的负面影响。
  • allow allocating large object from free list while background sweeping soh – dotnet/runtime #2103 — 当bgc清理soh时,使用空闲列表启用loh分配。以前这只是在loh上使用段空间的末端。这样可以更好地使用堆。
  • background gc suspension fixes – dotnet/coreclr #27729 -暂停修复程序减少了bgc和用户线程被暂停的时间。 这样可以减少发生gc之前挂起托管线程所需的总时间。 dotnet / coreclr#27578也有助于达到相同的结果。
  • fix named cgroup handling in docker – dotnet/runtime #980 — –
    添加了对从命名cgroup读取限制的支持。以前,我们仅从全局范围内阅读。

closing

在容器,虚拟机大家可以去尝试preview2。希望大家对.net5提出并反馈意见。接下来几个月里面,将会有更多的版本发布。最终将在11月发布正式版本。

作为测试案例,目前.net 5.0在azure负载均衡上运行了.net网站的50%的流量.
自从发布预览版1天以来一直在上面这么做了,也许大家还记得.net core3.0和3.1也这样做过测试案例.
通过将流量分流为5/5,可以确保在不断地性能数据情况下5.0将持续的改进变得更好。这种测试是公开的,也是一种很好的测试方法,目前用.net5在核心网站的生产环境这将是对.net5最大的信任,当然不建议大家现在进行使用到生产中,建议等等.目前版本号在的页脚中可以看到。

来源: