文章插图
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文章插图
1,955.67 μs103.023185 B6.98GetCurrentProcessName
文章插图
18.98 μs1.00456 B1.00在这里,我们可以看到一个更有效的内存方法,对.NET 7的实现有极高的性能提升 。
文章插图
3. Stopwatch
Stopwatch
被广泛用于测量运行时的性能 。到目前为止 , 存在的问题是,使用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文章插图
这种方法的速度优化并不明显,然而节省堆内存分配可以说是值得的 。
结尾我希望,我可以在性能和基准测试的世界里给你一个有趣的切入点 。如果你关于特定性能主题想法,请在评论中告诉我 。
如果你喜欢这个系列的文章 , 请务必关注我,因为还有很多有趣的话题等着你 。
谢谢你的阅读!
版权原文版权:Tobias Streng翻译版权:InCerry原文链接:https://medium.com/@tobias.streng/net-performance-series-1-performance-improvements-in-net-7-fb793f8f5f71
【.NET性能系列文章一:.NET7的性能改进】
推荐阅读
- dubbo的一系列配置与搭建
- 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析
- 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延迟消费指南
- 小米12系列哪个性价比高-小米12系列哪个值得买
- vivoT1版怎么样_vivoT1版优缺点