如何定位Source Generators性能问题
前言
在以前的文章中,我們介紹過如何調試Source Generators。但是當實現較為復雜時,我們需要能夠快速地分析Source Generators性能的方法。
默認情況下,使用VS 2019自帶的“性能探查器”不能分析Source Generators項目,因為它是類庫項目:
如果設置引用Source Generators的目標項目作為啟動項目,也不行。因為“性能探查器”只能收集啟動時的數據,而不是編譯時,而編譯時才是Source Generators實際執行的位置。
怎么辦?
那就想辦法啟動編譯指令。
獲取編譯指令
這時就要祭出我們在《你知道MSBuild都干了些什么》使用過的神器——MSBuild Structured Log Viewer。
生成日志后,可以看到MSBuild準備執行的所有目標,每個目標中包含多個任務。
我們瀏覽所有任務,最終可以定位到引用Source Generators的目標項目執行的Task Csc:?
Csc 任務 - 包裝 csc.exe,生成可執行 (.exe) 文件、動態鏈接庫(.dll 文件)或者代碼模塊(.netmodule 文件) 。有關 csc.exe 的詳細信息,請參閱 C# 編譯器選項 。
這里的CommandLineArguments就是我們要的編譯指令。
設置調試屬性
打開Source Generators項目的屬性窗口,設置“調試”屬性:
啟動:可執行文件
可執行文件:Task Csc參數CommandLineArguments里的csc.exe全路徑
應用程序參數:Task Csc參數CommandLineArguments里的csc.exe后面的全內容
工作目錄:引用Source Generators的目標項目所在目錄
執行性能探查器
將Source Generators項目設為啟動項目,然后運行“性能探查器”,勾選“CPU 使用率”,然后點擊“開始”按鈕。
運行完成后,在打開的報告中就可以查看Source Generators的性能瓶頸了:
如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“
總結
以上是生活随笔為你收集整理的如何定位Source Generators性能问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和我一起来分析某药品仓储管理系统 卡死现
- 下一篇: WPF 实现图片切成九宫格控件~