如何定位Source Generators性能问题

前言

在以前的文章中,我们介绍过如何调试Source Generators。但是当实现较为复杂时,我们需要能够快速地分析Source Generators性能的方法。

默认情况下,使用VS 2019自带的“性能探查器”不能分析Source Generators项目,因为它是类库项目:

d47479b77d6c298e00d7bd852ad3df0e.png

如果设置引用Source Generators的目标项目作为启动项目,也不行。因为“性能探查器”只能收集启动时的数据,而不是编译时,而编译时才是Source Generators实际执行的位置。

怎么办?

那就想办法启动编译指令。

获取编译指令

这时就要祭出我们在《你知道MSBuild都干了些什么》使用过的神器——MSBuild Structured Log Viewer

生成日志后,可以看到MSBuild准备执行的所有目标,每个目标中包含多个任务。

我们浏览所有任务,最终可以定位到引用Source Generators的目标项目执行的Task Csc

e1d66c64483f3eab6e09a8f0e680a5cf.png

Csc 任务 - 包装 csc.exe,生成可执行 (.exe) 文件、动态链接库(.dll 文件)或者代码模块(.netmodule 文件) 。有关 csc.exe 的详细信息,请参阅 C# 编译器选项 。

这里的CommandLineArguments就是我们要的编译指令。

设置调试属性

打开Source Generators项目的属性窗口,设置“调试”属性:

96f88182d6747e6932f5f616eec476f5.png

  • 启动:可执行文件

  • 可执行文件Task Csc参数CommandLineArguments里的csc.exe全路径

  • 应用程序参数Task Csc参数CommandLineArguments里的csc.exe后面的全内容

  • 工作目录:引用Source Generators的目标项目所在目录

执行性能探查器

将Source Generators项目设为启动项目,然后运行“性能探查器”,勾选“CPU 使用率”,然后点击“开始”按钮。

运行完成后,在打开的报告中就可以查看Source Generators的性能瓶颈了:

13f96316ae78445e6a57c56ed2ea4a0c.png

如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值