dotTrace 功能

dotTrace 是一款 .NET 应用程序性能分析器,可以直接在 Visual Studio/JetBrains Rider 中运行,并提供检测和分析性能瓶颈的出色方式。 阅读以获得更多详细信息。

支持的某些应用程序类型

分析所有类型的 .NET 应用程序

dotTrace 可以帮助您分析各种 .NET 应用程序的性能瓶颈,包括桌面应用程序、.NET Core、托管在 IIS 或 IIS Express web 服务器上的 ASP.NET 应用程序、Mono 与 Unity 应用程序、WCF 服务、Windows 服务、通用 Windows 平台应用程序和单元测试。

支持 Windows、macOS 和 Linux

在 Windows、macOS 和 Linux 上运行

dotTrace 支持针对 .NET Framework 1.0-4.7、.NET Core 1.0-3.0、Mono 5.10 或更高版本以及 Unity 2018.3 或更高版本的项目。 在 macOS 和 Linux 上,dotTrace 只能作为 JetBrains Rider 的一部分或命令行分析器使用。

Timeline、Sampling、Tracing 和 Line-by-line dotTrace 分析模式

Timeline 和更多分析模式

不同于“经典的”性能分析只衡量调用执行时间,Timeline 分析可以揭示调用的时间分布。

通过将方法调用数据绑定到时间线,此分析模式远不止仅检测最慢的方法:它可以诊断事件顺序至关重要的性能问题,例如,UI 死机、过度垃圾回收、工作负载分布不平衡、低效的文件 I/O 等。

不过,dotTrace 仍可使用传统的分析模式。 Sampling 分析是评估应用程序整体性能的最简单方法,而 TracingLine-by-line 分析模式则非常适用于需要详细了解特定算法内部运行效果的情况。

正在运行的 Timeline 分析模式

全新的分析体验

您可以使用筛选器、调用树或图表划分分析数据。 通过应用筛选器,您可以获得由特定条件选择的一组时间间隔。 其运作方式非常类似于在数据库上执行查询来获得恰好需要的数据。

例如,要查找是否因阻塞垃圾回收导致 UI 死机,您可以要求 dotTrace 在主线程上选择发生 UI 死机且执行了阻塞垃圾回收的所有时间间隔。 虽然听起来很复杂,但实际上只需点击两下即可切换这个筛选器组合。

Timeline Viewer 集成到 Visual Studio 中。 导航到方法声明

Visual Studio/Rider 深度集成

dotTrace 与 Visual Studio/JetBrains Rider 深度集成,帮助您无需离开 IDE 即可开始分析当前开发的应用程序。 您现在甚至可以直接在 IDE 中查看和分析 Timeline 分析结果。 在调用树中发现了热点调用? 立即导航到方法声明!

Visual Studio/JetBrains Rider 集成使分析体验几乎无缝,因为您不再需要在 IDE 和分析器之间切换。

分析异步调用

分析异步调用

dotTrace 使您可以轻松分析异步代码:async 调用的所有“部分”都在一个地方显示,因此您不必在不同的调用堆栈中搜索它们。

在 Visual Studio 中分析 static 方法

分析静态方法

dotTrace 使您可以即时分析代码中的任何静态方法。 只需将脱字符号放在方法上,按 Alt+Enter,并从操作列表中选择 Debug | Profile

试想一下这个功能可以做什么。 您可以在编写完代码后就地分析代码的任何部分! 无需生成解决方案,在分析器中运行,执行运行新代码的用法场景,等等。

在远程计算机上运行分析

分析远程应用程序

大多数情况下,您需要分析本地运行的应用程序。 但如果您面临远程 web 服务器上的滞后应用程序呢?

dotTrace 可以连接到远程计算机来分析独立或 web 应用程序,或 Windows 服务。 您甚至无需在远程计算机上安装 dotTrace:只需复制几个文件即可。

将性能分析器附加到正在运行的进程

连接到运行中的应用程序

dotTrace 可以连接到运行中的应用程序来执行分析,并在捕获分析数据后立即分离。

这样就最大程度地减少了在分析器下运行应用程序带来的开销。 更重要的是,如果您无法承受每次需要分析就重启应用程序,它可以在生产环境中调查性能问题

分析单元测试

分析单元测试

如果您有 Visual Studio + ReSharper* 捆绑包或 JetBrains Rider**,可以从代码编辑器或单元测试运行程序轻松地开始分析单元测试。

* 即使没安装 ReSharper,您仍然可以分析 NUnit、MSTest 或 xUnit 提供的原生单元测试运行程序。

** 只有“ReSharper Ultimate + Rider”或“All Products Pack”许可证的所有者可以使用分析功能。

Incoming HTTP Requests 分析

分析缓慢的 HTTP 请求

分析 Timeline 分析快照时,您可以筛选 web 应用程序处理传入 HTTP 请求的时间间隔。 获得确切的数据,确定确切的根本原因,并将运行缓慢的方法调整归零。 通过 Timeline 分析加快 web 应用程序。

分析 SQL 查询

分析缓慢的 SQL 查询

使用 Timeline 分析了解每条查询如何影响应用程序性能。 SQL Queries 筛选器可以显示所有 SQL 查询和 SQL 连接及其性能统计数据。

为方便起见,可以在单独的窗口中打开查询内容,进行深入分析。 您仍可以通过选择一条或多条查询来筛选所有数据,并调查执行它们的方法。

再也没有低效的 SQL 查询!

使用 dotTrace 分析 API

Profiling SDK

Profiling SDK 使您可以直接从代码中控制分析会话:以编程方式开始和停止收集分析数据,保存收集的快照,等等。

这样可以实现两个有价值的使用场景。 首先,您可以使用 SDK 来缩小分析范围,并选择分析哪部分代码。 第二个使用场景是自分析应用程序:您可以收集统计数据,显示您的应用程序在终端用户计算机上的行为。

在性能分析器上运行单元测试生成步骤

持续集成支持

dotTrace 附带命令行分析工具,可用于自动收集分析快照,如果您希望分析成为您的持续集成生成的一部分,此快照将非常有用。

如果您将 JetBrains TeamCity 用作 CI 服务器,请确保将 dotTrace 插件安装到 TeamCity。 该插件通过分析集成测试帮助您防止应用程序性能退化。 您只需设置测试执行时间的阈值,如果超过阈值,该插件将自动抓取性能快照并让测试失败。

即时估算(调整时间)

估计性能增益

有时,花数小时优化一个费时间的函数后,开发者必须从头开始分析以查看优化是否真的有效。

这对 dotTrace 而言不成问题。 性能分析器可以根据您设置的时间调整,立即重新计算快照中的所有函数时间,无需重新分析您的应用程序。 就像询问分析器:“如果我将此函数优化 40% 怎么样?”只需为某个函数或特定类中的所有函数指定新时间。 将重新计算整个快照的时间值。

比较快照

比较快照

dotTrace 可以比较同一应用程序的任意两个性能快照。 它会生成比较快照, 其中将显示每个函数的调用次数和消耗时间的差异。 可以像普通性能快照一样查看和分析比较快照。

下载 dotTrace

免费试用 10 天