Visual Studio 2019 v16.8预览版3。 2 介绍 显著的构建和链接时间改进。 在这篇博文中, 我们 详细说明如何 联盟大厦里的队伍 齿轮5 测试 这个 编译和链接时间 三 Visual Studio的不同版本 . 这个实验是为了 测量 不仅如此 总体的 端到端时间 改进 s 而且 与当前版本相比,预览中的链接时间有所改进。 使用 Visual Studio 2019 , 团队看到 快2.67倍 e 钕 -结束 构建时间 和 快27.9倍 链接时间 相比 Visual Studio 2017。
“改进是巨大的,将极大地改善我们的迭代时间 ” – 奥雷尔·科登尼尔 来自联盟
编译时间是visualstudio开发人员反馈的一致主题。最近,我们启动了大量构建优化工作。其中之一就是与Xbox游戏工作室的同事密切合作。在这里,我们寻找机会来改善visualstudio开发人员的体验。下面详细介绍了联盟在使用VisualStudio2019V16.8 Preview 3.2时看到的构建和链接时间改进。
方法论
Gears5团队按照顺序使用三种不同的构建配置编译并链接了游戏的PC版本。configs将一个非常大的代码库编译并链接到一个单片可执行文件中。为了得到一致的结果,研究小组选择不使用/debug:fastlink with 因为机器需要发布符号,所以生成机器。
为了测量链接时间,这个编译实验的挂钟执行时间从调用链接之前开始,到链接最终可执行文件之后结束。类似地,从构建系统输出读取端到端时间(总执行时间)。然后,从总执行时间中减去链接器详细输出的链接时间,得到编译时间。 结果是对每个配置进行五次测试的平均值,以实现低方差的一致性。
结果
实验结果表明,在visualstudio2019中,编译时间和链接时间都有了显著的提高,三种配置的编译时间都提高了一倍 2.15 . 在ship配置中,Gears 5在Visual Studio 2017中的编译时间为41分钟(2461.92秒)。相比之下,在Visual Studio 2019 16.8 Preview 3.2中的编译时间仅为18.76分钟(1125.61秒)。平均而言,连接时间提高了 27.9倍 . 飞船配置只花了29.57秒,而之前是11.28分钟(677.07秒)。总的来说,端到端编译时间减少了一倍 2.67倍 .
编译时间(秒) | 开发 | 测试 | 船 |
15.9 | 2779.80 | 2605.97 | 2461.92 |
16.7.5 | 1321.47 | 1155.24 | 1089.27 |
16.8.0第3.2页 | 1338.17 | 1193.48 | 1125.61 |
快x倍 | 2.08 | 2.18 | 2.19 |
平均快x倍 | 2.15 |
链接时间(秒) | 开发 | 测试 | 船 |
15.9 | 751.93 | 682.06 | 677.07 |
16.7.5 | 66.76 | 62.86 | 59 |
16.8.0第3.2页 | 26.72 | 26.25 | 22.90 |
快x倍 | 28.14 | 25.98 | 29.57 |
平均快x倍 | 27.90 |
端到端(秒) | 开发 | 测试 | 船 |
15.9 | 3531.73 | 3288.03 | 3138.99 |
16.7.5 | 1388.23 | 1218.10 | 1148.27 |
16.8.0第3.2页 | 1364.89 | 1219.73 | 1148.51 |
快x倍 | 2.59 | 2.70 | 2.73 |
平均快x倍 | 2.67 |
分析
C++团队在VisualStudio版本16和16.2中对链接器性能进行了大量的步骤,其中两个显著的改变是链接器,这有助于加速程序数据库(PDB)文件的生成。后端中的类型修剪将删除未引用的类型信息。通过使用快速哈希函数来识别相同的类型,类型合并加快了速度。 请在这篇博文中查看详细信息。
在版本16.6中,对PDB和Debug接口访问组件中的算法进行了更改。下一步,在 版本16.7以加快最坏情况下的增量链接时间 . 后来,多线程PDB文件的生成进一步提高了版本16.8的性能。请继续关注未来深入研究这些改进的博客。
联盟的奥雷尔 向我们讲述了改进的构建时间对工作室的影响。
是什么促使您迁移到Visual Studio 2019?
所以,我们实际上并没有将第5档移到2019档,而是让VisualStudio2019在PC上运行,以比较构建时间并提供反馈。Gears5在一年前就已经发布了,游戏也经过了非常仔细的调整;因此,我们不想冒险改变工具链,因为我们的测试能力有限,非常微小的优化改变可能会以非常微妙的方式改变游戏的平衡。此外,XDK不支持2019,因此我们需要支持两个工具链,这是我们没有能力支持的。
实验的结果加强了我们的愿望,即在未来的项目中使用最新版本的visualstudio。
有什么直接的好处?
我们在下一个(未经宣布的)项目中使用visualstudio2019,它的好处很多:更快的编译/链接时间、更灵敏的UI、更稳定的调试。
有哪些潜在的长期利益?
开发人员迭代是我们成功的关键,任何时候我们都可以从迭代循环中节省几秒钟的时间,这意味着开发人员有更多的时间来编写高质量的代码、修复bug等。在构建场上更快的构建时间意味着我们的测试团队可以更快地获得构建,可以找到更多bug等。
最后,我们会为我们的球迷带来一场更好的比赛。
这将如何改变工作室的工作流程模式?
对于VisualStudio2017(以及16.8之前的2019),我们必须在快速链接时间和调试稳定性(通过使用/debug:fastlink or 不是)。
有了16.8,我们可以有两个链接时间没有快速链接是非常快的。
下载最新的Visual Studio 2019预览版 为您自己的项目体验更快的端到端编译时间。
这些改进将如何影响您的日常工作流程?请在下面的评论中与我们交谈 推特(@VisualC) ,或通过电子邮件 visualcpp@microsoft.com