VS2022 性能提升:更快的 C++ 代码索引

VS2022 性能提升:更快的 C++ 代码索引

作者:BlogUpdater |  时间:2022-11-16 |  浏览:113 |  评论已关闭 条评论

基于 Visual Studio 2022 17.3 版本的性能提升,我们在新的 17.4 版本中添加了更多的小优化,且听我慢慢道来。

不论你是一个工作在大型代码库下的游戏开发者,或者你在解决方案中有非常多的 C++ 工程,在 Visual Studio 2022 17.4 中,你都会感受到前所未有的”快”。

在 17.4 中,我们优化了 C++ 工程首次加载(冷载)下的启动时间。

当我们做这些优化的时候,我们也同时考虑这些优化措施在真实世界中的大型 C++ 工程的表现,除了测试我们自己的工程之外,我们还测试了那些比较流行的大型游戏工程。

大型 C++ 工程在填充用于浏览和导航的源代码数据库时,速度可能比 17.3 提高了 20-36%。

与 VS 2019 相比,此方案的累积性能增益应在2倍-6倍之间,具体取决于项目结构和规模。

在今天这篇文章中,我们想重点介绍《战争机器》(Gears of War)源代码和通用虚幻引擎5入门项目的C++ 工程的代码索引场景。

测试环境
硬件: AMD Ryzen(锐龙) PRO 3945WX 12/24, 128GB 内存, 2.5TB 固态硬盘, RTX 3080

工程/源代码:战争机器、虚幻引擎5入门项目、Chromium

Visual Studio:VS2019 v16.11 和 VS2022 v17.4

对于所有测试场景,我们使用了 VS 的系统事件/日志来跟踪操作的持续时间。

测试结果
让我们看看过去一年我们在这一领域为 C++ 工程所做的所有改进的累积效应。

在 Visual Studio 2019 16.11 中,Gears of War 大约需要6分半钟才能完全索引。在 Visual Studio 2022 17.4 中,等待索引完成只需要 2 分半钟多一点,从而将速度提高 2.5 倍。

在新的虚幻引擎5解决方案中编写代码时,你会看到,最新版本的 VS2022 与 VS2019 相比有了巨大的改进。在VS2019 16.11中,完全索引全新的UE5 C++解决方案需要2分半钟多一点的时间。使用 VS2022 17.4 时,将同一 UE5 解决方案完全索引现在只需 1 分钟即可提高 2.7 倍。无论你是创建新的UE5项目还是从现有存储库克隆,你的代码在17.4中都会更快地索引。

突破极限
很少有开源项目达到 Chromium 的规模,在一个 Visual Studio 解决方案中有超过 12000 个项目,因此自然而然地,它是对我们正在改进的组件进行压力测试的不可抗拒的目标。让我们看看我们是如何做到的。

在 Visual Studio 2019 16.11 中,Chromium 存储库大约需要31分钟才能完全索引。在 Visual Studio 2022 17.4 中,等待索引完成只需 5 分钟,速度提高了 6 倍。首次索引大型解决方案(如 Chromium 存储库)时,使用最新版本的 Visual Studio 最多可节省 26 分钟。

试试看
尽管每个人都应该看到这些方案的显着改进,但收益的大小取决于你的源代码、项目布局、代码架构等。因此,请在你的代码库中试用它,看看你的使用体验是否如这里所说的那样”快”,正所谓:光说不练假把式。

总结
我绕破了头皮也没想明白两个问题:
> 老大哥你为什么这么强?
> Chromium 有 12000 个工程?Holly席特!(战术后仰:什么叫大型 C++ 工程 !)
看来,革命还未成功,我还需努力啊。

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

最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

标签:

评论已关闭。