VS2022 17.8: Build Insights 中的函数视图

简述

今天,我们很高兴的宣布在 Visual Studio 中为 Build Insights 新增了一项新功能:函数视图(Functions View)。

此功能在 Visual Studio 2022 v17.8 版本中可用。函数视图可以为你的代码库中的函数和强制内联(Forceinlines)提供更加具有深度的洞察力。

我们衷心感谢开发者社区,特别是我们的游戏工作室合作伙伴,他们积极地提供了使用反馈,您的贡献对于塑造这一新功能非常宝贵。

如果你希望了解更多关于 Build Insights 的信息,或者希望体验其它的子功能,例如 Included Files 和 Include Tree Views,可以移步至之前我们 7 月份的博客文章。

在函数视图中了解代码生成中的细节

函数视图是一个功能强大的工具,它通过分析代码生成时间和强制内联来显示每个函数对总生成时间的影响。通常用于提高运行时效率的强制内联也会影响工程的总体构建时间。

下面的代码来自 Aras Pranckevičius 一篇公开文章。我们将使用它来向你展示如何使用 Functions View 来优化构建过程。如果你也想做这个小实验,可以先在 Visual Studio 中创建一个 C++ 控制台应用程序并复制以下例子代码到源文件中。

>> 请移步至 www.topomel.com 以查看图片 <<

在执行这段例子代码之前,请通过下面的设置步骤确保函数是被强制内联的。

  1. 在解决方案管理器中,在项目上右键打开上下文菜单。

  2. 选择项目属性。

  3. 在项目属性对话框中,导航至 【C/C++】 / 【优化】。

  4. 在优化设置下拉框中,选择【Maximum Optimization (Favor Speed) (/Ox)】。

最后,在构建菜单中,选择 【Run Build Insights on Solution】 并选择 【Build】。下图展示了 Build Insights 中生成的构建报告。

>> 请移步至 www.topomel.com 以查看图片 <<

工程的总体构建时间是 7.342 秒。main 函数包括【

forceinlinedsampleFunDecomposition】函数的 8 个实例,这极大地影响了 main 函数的大小。

若要减轻生成时的影响,请从【sampleFunDecomposition】函数中删除__forceinline,并观察对生成时的影响。

>> 请移步至 www.topomel.com 以查看图片 <<

现在,我们再次执行 Build Insights,可以看到构建时间得到了明显的改善。

>> 请移步至 www.topomel.com 以查看图片 <<

通过从【sampleFunDecomposition】中删除__forceinline,构建时间从 7.342 秒缩短到 0.251 秒,比原始时间缩短了 97%!

接下来

我们正在快速迭代,致力于为您提供更多价值。预计在下一版本中会出现以下情况:

> 为清楚起见,【Time】列将被重命名为【Contribution】。

> 添加了一个新的列【Forceinline Count】。

> forceinline 指标的聚合:在扩展函数时,将对 forceinlines 进行分组。

> 引入【工具原点】(Tool origin),用来指示代码生成发生的位置。

> 添加文件路径列和导航:它将显示每个 forceinlined 函数的文件位置,以便于导航,并可选择转到源文件。

> 添加一个新的列【Duration】,在不考虑并行操作的情况下反映构建时间。

总结

如果你正在开发一个大型工程,Build Insights 将会是你用来优化构建时间的利器。

如果编译一个工程动辄就需要 30 分钟以上的构建时间,这就不可避免的降低工作效率。

毕竟,生命中的时间是如此重要,我无法容忍时间花在这上面。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《Functions View for Build Insights in Visual Studio 2022 17.8》

相关推荐
EnCi Zheng4 小时前
SpringBoot + PostgreSQL 密码认证失败 Windows 系统解决方案
windows·spring boot·postgresql
Damon小智6 小时前
玩转CodeX:CodeX安装教程(Windows+Linux+MacOS)
linux·windows·macos·ai·ai编程·codex·gpt-5
用户31187945592186 小时前
DOpusInstall-13.2.exe 安装方法,简单几步完成
windows
张某人的胡思乱想9 小时前
Create/Assemble/Link x64 Windows
windows
ThisIsMirror10 小时前
CompletableFuture并行任务超时处理模板
java·windows·python
say_fall11 小时前
精通C语言(2.结构体)(内含彩虹)
c语言·开发语言·windows
长源Gingko11 小时前
Windows中在QTCreator中调试,提示缺少debug information files问题的解决
windows·qt
white-persist12 小时前
MCP协议深度解析:AI时代的通用连接器
网络·人工智能·windows·爬虫·python·自动化
影子240113 小时前
Windows Server2016 服务器安装JDK,一直卡在“应用程序正在为首次使用作准备,请稍候” ,导致jdk安装失败解决方案
运维·服务器·windows·jdk
wan5555cn14 小时前
Windows 11系统鼠标键盘被禁用问题的全面解决方案
windows·笔记·深度学习·计算机外设