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》

相关推荐
DogDaoDao2 天前
【GitHub】System Informer:Windows 平台最强开源系统监控与调试利器
windows·程序员·开源·github·开发工具·system informer
HashFlag2 天前
Codex配置Skill
windows·ai·mac·codex
idolao2 天前
RayLink_v8.1.6.8安装步骤详解(附RayLink远程控制与设备码连接教程)
windows
极光代码工作室2 天前
基于机器学习的商品价格预测系统
人工智能·深度学习·机器学习·ai·系统设计
lingx_gps2 天前
Windows 下安装领新北斗(TracSeek)车辆动态监控系统小白指南
windows·jt808·车辆监控·主动安全·jt1078·车辆定位
2601_958320572 天前
【详细版教程】Windows/macOS/Linux 安装 OpenClaw 2.6.6 指南(包含安装包)
linux·运维·windows·macos·小龙虾·open claw一键安装
HackTwoHub2 天前
可视化未授权访问批量探测工具、支持批量目标、并发扫描、SOCKS5 全局代理、CSV 导出
linux·windows·macos·网络安全·网络攻击模型
50万马克的面包2 天前
C 语言第18讲:预处理详解
c语言·开发语言·windows
无限进步_2 天前
简单聊聊 C++ 中的 unordered_map 和 unordered_set
c语言·开发语言·数据结构·c++·windows·哈希算法·散列表
the sun342 天前
共享文件夹设置:让Windows和Ubuntu能方便的传输文件
linux·windows·ubuntu