.Net8新添加的高性能类型的介绍

前言

.Net8这个版本,比之.Net7改动了非常多。本篇来看下它其中的一些类型性能的改动,官方推荐的旨在提高应用性能的新类型。

概括

1.System.Collections.Frozen
命名空间包括集合类型 FrozenDictionary<TKey,TValue> 和 FrozenSet。创建集合后,这些类型不允许对键和值进行任何更改。此要求可实现更快的读取操作(例如,TryGetValue())。对于在首次使用时填充,然后在长期服务期间保留的集合,这些类型特别有用,例如:

private static readonly FrozenDictionary<string, bool> s_configurationData =
    LoadConfigurationData().ToFrozenDictionary(optimizeForReads: true);
// ...
if (s_configurationData.TryGetValue(key, out bool setting) && setting)
{
    Process();
}

2.System.Buffers.IndexOfAnyValues

类型旨在传递给在传递的集合中查找任何值的第一个匹配项的方法。例如,String.IndexOfAny(Char[]) 在调用它的 string 中查找指定数组中任何字符的第一个匹配项。NET 8 添加了新的方法重载,例如接受新类型实例的 String.IndexOfAny 和 MemoryExtensions.IndexOfAny。创建 System.Buffers.IndexOfAnyValues 的实例时,将在那时派生优化后续搜索所需的所有数据,这意味着工作是预先完成的。

3.System.Text.CompositeFormat
类型可用于优化编译时未知的格式字符串(例如,格式字符串是从资源文件加载的)。前面会花费一些额外的时间来完成诸如分析字符串之类的工作,但这可以节省每次使用时完成的工作。

4.System.Buffers.IndexOfAnyValues
类型旨在传递给在传递的集合中查找任何值的第一个匹配项的方法。例如,String.IndexOfAny(Char[]) 在调用它的 string 中查找指定数组中任何字符的第一个匹配项。NET 8 添加了新的方法重载,例如接受新类型实例的 String.IndexOfAny 和 MemoryExtensions.IndexOfAny。创建 System.Buffers.IndexOfAnyValues 的实例时,将在那时派生优化后续搜索所需的所有数据,这意味着工作是预先完成的。

5.System.Text.CompositeFormat
类型可用于优化编译时未知的格式字符串(例如,格式字符串是从资源文件加载的)。前面会花费一些额外的时间来完成诸如分析字符串之类的工作,但这可以节省每次使用时完成的工作。

private static readonly CompositeFormat s_rangeMessage = CompositeFormat.Parse(LoadRangeMessageResource());
// ...
static string GetMessage(int min, int max) =>
    string.Format(CultureInfo.InvariantCulture, s_rangeMessage, min, max);

6.System.Numerics和System.Runtime.Intrinsics

System.Numerics和System.Runtime.Intrinsics名空间的改进。Vector256、Matrix3x2和Matrix4x4改进了.NET 8上的硬件加速.例如,Vector256 在可能的情况下已重新实现2xVector128。硬件内部函数现在使用 ConstExpected 属性进行批注。这可确保用户知道基础硬件何时需要常量,以及非常量值何时可能会意外损害性能。

结尾

作者:江湖评谈
参考:

https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值