文章插图
1000629.3 ns1.00-
文章插图
这里的性能提升并不像前面的例子那么突出,但还是非常高的!
3. Order接下来是这是新增了两个排序方法
Order()
和OrderDescending()
。当你不想映射到IComparable
类型时,应该使用新的方法取代.NET7中旧的OrderBy()
和OrderByDescending()
方法 。[Params(1000)]public int Length { get; set; }private double[] arr;[GlobalSetup]public void GlobalSetup(){var random = new Random();arr = Enumerable.Range(0, Length).Select(_ => random.NextDouble()).ToArray();}[Benchmark]public double[] OrderBy() => arr.OrderBy(d => d).ToArray();#if NET7_0[Benchmark]public double[] Order() => arr.Order().ToArray();#endif
方法数组长度平均值分配OrderBy100051.13 μs27.61 KBOrder100050.82 μs19.77 KB在这个基准中,只使用了.NET 7,因为Order()
方法在旧的运行时中不可用 。我们无法看到这两种方法之间的性能影响 。然而,我们可以看到的是在堆内存分配方面有很大的改进,这将显著减少垃圾收集,从而节省一些GC时间 。
System.IO在.NET 7中,Windows下的IO性能有了些许改善 。
WriteAllText()
方法不再使用那么多分配的内存,ReadAllText()
方法与.NET 6相比也快了一些 。[Benchmark]public void WriteAllText() => File.WriteAllText(path1, content);[Benchmark]public string ReadAllText() => File.ReadAllText(path2);
方法运行时平均值比率分配WriteAllText文章插图
193.50 μs1.0310016 BWriteAllText
文章插图
187.32 μs1.00464 BReadAllText
文章插图
23.29 μs1.0824248 BReadAllText
文章插图
21.53 μs1.0024248 B序列化 (System.Text.Json)【.NET性能系列文章一:.NET7的性能改进】来自
System.Text.Json
命名空间的JsonSerializer
得到了一个小小的升级,一些使用了反射的自定义处理程序会在幕后为你缓存,即使你初始化一个JsonSerialzierOptions
的新实例 。private JsonSerializerOptions options = new JsonSerializerOptions();private TestClass instance = new TestClass("Test");[Benchmark(Baseline = true)]public string Default() => JsonSerializer.Serialize(instance);[Benchmark]public string CachedOptions() => JsonSerializer.Serialize(instance, options);[Benchmark]public string NoCachedOptions() => JsonSerializer.Serialize(instance, new JsonSerializerOptions());public record TestClass(string Test);
在上面代码中,对NoCachedOptions()
的调用通常会导致JsonSerialzierOptions
的额外实例化和一些自动生成的处理程序 。在.NET 7中这些实例是被缓存的,当你在代码中使用这种方法时,你的性能会好一些 。否则,无论如何都要缓存你的JsonSerialzierOptions
,就像在CachedOptions
例子中,你不会看到很大的提升 。方法运行时平均值比率分配分配比率Default
文章插图
135.4 ns1.04208 B3.71CachedOptions
文章插图
145.9 ns1.12208 B3.71NoCachedOptions
文章插图
90,069.7 ns691.897718 B137.82Default
经验总结扩展阅读
- 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延迟消费指南