文章插图
130.2 ns1.0056 B1.00CachedOptions
文章插图
129.8 ns0.9956 B1.00NoCachedOptions
文章插图
533.8 ns4.10345 B6.16基本类型1. Guid 相等比较有一项改进,肯定会导致现代应用程序的性能大增,那就是对
Guid
相等比较的新实现 。private Guid guid0 = Guid.Parse("18a2c952-2920-4750-844b-2007cb6fd42d");private Guid guid1 = Guid.Parse("18a2c952-2920-4750-844b-2007cb6fd42d");[Benchmark]public bool GuidEquals() => guid0 == guid1;
方法运行时平均值比率GuidEquals文章插图
1.808 ns1.49GuidEquals
文章插图
1.213 ns1.00可以感觉到,新的实现也使用了SIMD,比旧的实现快30%左右 。
文章插图
由于有大量的API使用
Guid
作为实体的标识符,这肯定会积极的产生影响 。2. BigInt 解析一个很大的改进发生在将巨大的数字从字符串解析为
BigInteger
类型 。就我个人而言,在一些区块链项目中,我曾使用过BigInteger
类型,在那里有必要使用这种类型来表示ETH代币的精度 。所以在性能方面,这对我来说会很方便 。private string bigIntString = string.Concat(Enumerable.Repeat("123456789", 100000));[Benchmark]public BigInteger ParseBigInt() => BigInteger.Parse(bigIntString);
方法运行时平均值比率分配ParseBigInt文章插图
2.058 s1.622.09 MBParseBigInt
文章插图
1.268 s1.002.47 MB
文章插图
我们可以看到性能有了明显的提高,不过我们也看到它比.NET6上多分配一些内存 。
3. Boolean 解析对于解析
boolean
类型,我们也有显著的性能改进:[Benchmark]public bool ParseBool() => bool.TryParse("True", out _);
方法运行时平均值比率ParseBool文章插图
8.164 ns5.21ParseBool
文章插图
1.590 ns1.00
文章插图
诊断
System.Diagnostics
命名空间也进行了升级 。进程处理有两个重大改进,Stopwatch
有一个新功能 。1. GetProcessByName
[Benchmark]public Process[] GetProcessByName()=> Process.GetProcessesByName("dotnet.exe");
方法运行时平均值比率分配分配比率GetProcessByName文章插图
2.065 ms1.04529.89 KB247.31GetProcessByName
文章插图
1.989 ms1.002.14 KB1.00新的
GetProcessByName()
的速度并不明显,但使用的分配内存比前者少得多 。文章插图
2. GetCurrentProcessName
[Benchmark]public string GetCurrentProcessName()=> Process.GetCurrentProcess().ProcessName;
方法运行时平均值比率分配分配比率GetCurrentProcessName经验总结扩展阅读
- dubbo的一系列配置与搭建
- 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析
- iqoo7拍照怎么样_iqoo7拍照测评
- vivox60充电时间_vivox60充电快吗
- MassTransit | .NET 分布式应用框架
- 基于PL022 SPI 控制器 海思3516系列芯片SPI速率慢问题深入分析与优化
- 格力空调哪个系列好 格力空调都有哪些系列
- 4 .NET 6学习笔记——如何在.NET 6的Desktop App中使用Windows Runtime API
- 学习ASP.NET Core Blazor编程系列八——数据校验
- 【.NET 6】RabbitMQ延迟消费指南