内容提要
2023年,Visual Studio的性能分析工具得到了改进,提高了效率和用户友好性。改进包括仪器化工具、.NET计数器工具、平台支持、单元测试性能分析和整体性能提升。
延伸解读
仪器化工具改进:C++支持与暂停收集
2023年,Visual Studio的仪器化工具获得显著提升,新增对C++代码的支持,并引入“开始时暂停收集”选项。仪器化数据视图按持续时间排序函数,帮助快速定位瓶颈。暂停收集功能特别适用于游戏等需要完全沉浸的场景,用户可在适当时机再启动数据收集。这些改进源于开发者社区的反馈,体现了工具对多样化需求的响应。
.NET计数器与Meters API集成
通过诊断窗口的“选择工具”下拉菜单,用户可轻松访问.NET计数器工具,在调试时监控关键性能指标。新增对.NET Meters API的集成,提供“Counter”和“ObservableCounter”两种仪器选项,分别用于跟踪随时间变化的值和由调用方维护总值的情况。这些指标可在.NET计数器指标列表中查看,增强了系统性能和资源利用率的可见性。
WSL实时图表与BenchmarkDotNet支持
性能分析工具现支持从WSL的dotnet-monitor收集数据时显示实时图表,涵盖.NET对象分配、CPU使用率和.NET计数器。用户可先查看实时计数器信息,停止收集后深入分析内存分配、调用树等详细数据。此外,Visual Studio Profiler升级支持BenchmarkDotNet IDiagnosers,Benchmark选项卡可视化执行的基准测试,并可通过双击选择特定基准,统计数据直接来自BenchmarkDotNet并以网格形式呈现。
测试性能分析与停止收集性能提升
Visual Studio 2022引入更新的测试性能分析功能,在测试资源管理器中右键点击测试并选择“Profile”,即可从CPU使用率、GPU使用率、文件IO、.NET Async和事件查看器等工具中选择,生成报告以分析测试性能。此功能仅在企业版中可用。同时,性能分析器的停止收集功能显著提速:生成报告时约快3.5倍,使用缓存值时约快15倍。基于10秒跟踪的测试显示,17.6版本比17.5和17.4版本明显更快。
Q&A
2023年Visual Studio的Instrumentation工具有哪些改进?
2023年,Instrumentation工具进行了重大改进,速度更快、更灵活,并支持C++代码。新增的Instrumentation数据视图按持续时间列出函数,便于识别瓶颈。此外,还引入了“开始时暂停收集”选项,可在分析期间暂停数据收集,适用于游戏等场景。
如何在Visual Studio中监控.NET性能计数器?
在调试时,可以从诊断窗口的“选择工具”下拉菜单中选择“.NET计数器”来访问.NET计数器工具。该工具支持监控和评估重要的性能指标,并集成了.NET Meters API,新增了“Counter”和“ObservableCounter”两种仪器选项。
Visual Studio的性能分析工具如何帮助分析内存分配?
增强的.NET对象分配工具可以通过ETL文件格式无缝导入来自.NET数据提供程序的分配数据,帮助分析分配事件并有效监控内存使用情况。此外,WSL的实时图表功能可以实时显示.NET对象分配数据。
Visual Studio Profiler对BenchmarkDotNet提供了哪些支持?
Visual Studio Profiler已升级支持BenchmarkDotNet IDiagnosers,这些IDiagnosers用于高效收集BenchmarkDotNet场景的诊断数据。Benchmark选项卡提供已执行基准测试的可视化,并可通过双击特定行精确选择基准测试,还可以通过右键上下文菜单导航到源文件,统计数据直接来自BenchmarkDotNet并以结构化网格格式呈现。
Visual Studio 2022的测试性能分析功能有哪些?
在Visual Studio 2022中,右键单击测试资源管理器中的测试并选择“Profile”,可以从可用工具中选择CPU Usage、GPU Usage、File IO、.NET Async和Events Viewer等工具。选择工具后点击“Start”即可生成报告,帮助分析测试性能并识别潜在问题。此功能仅在Visual Studio Enterprise版本中可用。
Visual Studio性能分析器的停止收集功能在性能上有哪些提升?
性能分析器的停止收集功能显著提升,生成时运行速度提高了约3.5倍,使用缓存值时(如果可用则始终使用)速度提高了近15倍。在Visual Studio中使用10秒跟踪进行测试,版本17.6比之前的17.5和17.4版本表现出更快的性能。