.NET性能系列文章一:.NET7的性能改进( 三 )


文章插图
2.058 s1.622.09 MBParseBigInt

.NET性能系列文章一:.NET7的性能改进

文章插图
1.268 s1.002.47 MB
.NET性能系列文章一:.NET7的性能改进

文章插图
我们可以看到性能有了明显的提高 , 不过我们也看到它比.NET6上多分配一些内存 。
3. Boolean 解析对于解析boolean类型,我们也有显著的性能改进:
[Benchmark]public bool ParseBool() => bool.TryParse("True", out _);方法运行时平均值比率ParseBool
.NET性能系列文章一:.NET7的性能改进

文章插图
8.164 ns5.21ParseBool
.NET性能系列文章一:.NET7的性能改进

文章插图
1.590 ns1.00
.NET性能系列文章一:.NET7的性能改进

文章插图
诊断System.Diagnostics命名空间也进行了升级 。进程处理有两个重大改进 , Stopwatch有一个新功能 。
1. GetProcessByName[Benchmark]public Process[] GetProcessByName()=> Process.GetProcessesByName("dotnet.exe");方法运行时平均值比率分配分配比率GetProcessByName
.NET性能系列文章一:.NET7的性能改进

文章插图
2.065 ms1.04529.89 KB247.31GetProcessByName
.NET性能系列文章一:.NET7的性能改进

文章插图
1.989 ms1.002.14 KB1.00新的GetProcessByName()的速度并不明显 , 但使用的分配内存比前者少得多 。
.NET性能系列文章一:.NET7的性能改进

文章插图
2. GetCurrentProcessName[Benchmark]public string GetCurrentProcessName()=> Process.GetCurrentProcess().ProcessName;方法运行时平均值比率分配分配比率GetCurrentProcessName
.NET性能系列文章一:.NET7的性能改进

文章插图
1,955.67 μs103.023185 B6.98GetCurrentProcessName
.NET性能系列文章一:.NET7的性能改进

文章插图
18.98 μs1.00456 B1.00在这里,我们可以看到一个更有效的内存方法,对.NET 7的实现有极高的性能提升 。
.NET性能系列文章一:.NET7的性能改进

文章插图
3. StopwatchStopwatch被广泛用于测量运行时的性能 。到目前为止 , 存在的问题是,使用Stopwatch需要分配堆内存 。为了解决这个问题,dotnet社区实现了一个静态函数GetTimestamp(),它仍然需要一个复杂的逻辑来有效地获得时间差 。现在又实现了另一个静态方法,名为GetElapsedTime(),在这里你可以传递之前的时间戳,并在不分配堆内存的情况下获得经过的时间 。
[Benchmark(Baseline = true)]public TimeSpan OldStopwatch(){Stopwatch sw = Stopwatch.StartNew();return sw.Elapsed;}[Benchmark]public TimeSpan NewStopwatch(){long timestamp = Stopwatch.GetTimestamp();return Stopwatch.GetElapsedTime(timestamp);}MethodMeanRatioAllocatedAlloc RatioOldStopwatch39.44 ns1.0040 B1.00NewStopwatch37.13 ns0.94-0.00
.NET性能系列文章一:.NET7的性能改进

文章插图
这种方法的速度优化并不明显,然而节省堆内存分配可以说是值得的 。
结尾我希望,我可以在性能和基准测试的世界里给你一个有趣的切入点 。如果你关于特定性能主题想法,请在评论中告诉我 。
如果你喜欢这个系列的文章 , 请务必关注我,因为还有很多有趣的话题等着你 。
谢谢你的阅读!
版权原文版权:Tobias Streng翻译版权:InCerry原文链接:https://medium.com/@tobias.streng/net-performance-series-1-performance-improvements-in-net-7-fb793f8f5f71
【.NET性能系列文章一:.NET7的性能改进】

推荐阅读