VS2019优化新鲜出炉:C++后端更新汇总

Visual Studio 2019 16.2版本针对C++后端进行了多项优化,包括构建时间、内联、代码生成、迭代器、分析和其他通用优化。构建时间在DebugInfo模式下提升3倍,/INCREMENTAL模式下提升2倍。内联优化增强,代码生成中引入内联汇编指令减少overhead。迭代器优化针对特定情况使用FMA和constant folding。分析优化移除已知返回值的分支语句,并引入流程敏感的指针分析。其他优化包括Copy Elision、LTCG的指针相减优化、FMA指令的使用和spaceship操作符的代码生成优化。最后,memset代码也得到优化,异常处理状态合并减少程序大小。
摘要由CSDN通过智能技术生成

今天我们来汇总一下在最新版本Visual Studio 2019 16.2中开发团队带来的一系列有关C++后端(Backend)的更新。

构建时间优化

之前的一篇文章我们也讲到过,VS开发团队通过优化构建中的链接过程,来提升构建吞吐率,减少了项目的构建时间。通过一系列对比测试,对于大型项目的构建,其构建效率在DebugInfo模式下提升了近3倍(甚至更多),同时在/INCREMENTAL构建模式下,构建效率提升了2倍。有图有真相:

VS2019优化新鲜出炉:C++后端更新汇总

 

下面是之前没有提到过的其他优化要点

内联优化

当一些函数内部存在分支语句并且在一个循环里被调用的时候,这些函数将更多的采用内联。

代码生成优化

通过将一些通用的数学函数(例如:std::isnan, std::ldiv, std::lldiv)替换为内联的汇编指令来减少整体运行的overhead。

如果项目的目标平台是x86或者x64,则优化器将识别到工作在最底层单元的迭代器指令,并对其进行FMA(Fused Multiply-Add)和constant foldeing优化。

迭代器优化

对于一些迭代器的单元来说,如果它的大小恰好匹配迭代器的大小,则一些小的迭代循环(通常小于12次迭代)将被优化为:/arch:AVX。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值